7-jdbc-with-notes-for-2024
7-jdbc-with-notes-for-2024
Embedded
SQL and
JDBC
Prerequisites
(these must all be installed – already
installed for mysql on nightmare here)
• A DBMS
• Java and JDBC ( JDBC API )
• Drivers
JDBC
• JDBC is a set of Java interfaces
– Driver, Connection, Statement, ResultSet, etc.
• Database vendors (companies selling a DBMS
e.g. Oracle) implement these interfaces
Terminology
• Embedded SQL
– SQL statements inside a host program i.e. inside a
program written in a host language like Java or C++
• JDBC
– A Java API for connecting to databases. Defines
behaviour
• JDBC Driver
– An implementation of the JDBC driver interface
provided by a database vendor like Oracle etc.
• Database URL
– A string to uniquely determine a database server and
database
JDBC
JDBC
Driver
import java.sql.*;
static String DRIVER =
“com.mysql.jdbc.Driver”;
Class.forName ( DRIVER ); Database
Making a Connection
import java.sql.*;
Connection conn= DriverManager.getConnection
("jdbc:oracle:thin:@server.cs.uct.ac.za:1521:CS01",
loginname, passwd);
the URL for the database includes the protocol (Jdbc), the vendor
(Oracle), the driver (thin), the server (server.cs.uct.ac.za), the
port number (1521) and a server instance (CS01).
URL is followed by database username and password
Creating a statement
Statement st = conn.createStatement( ); // example 1
Statement st =conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE ); // example 2
• Note: Not all databases and JDBC drivers support all ResultSet types.
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
Executing
• You create a string that is standard SQL syntax
and pass it to the Statement object
• Execute an update
executeUpdate( ) Statement
ResultSet rs = stmt.executeQuery(query);
while ( rs.next( ) ) {
String ID = rs.getString(“ID");
String name = rs.getString("NAME");
int marks = rs.getInt("MARKS");
System.out.println(ID+”,”+name+”:”+marks)
}
19
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
while( rs.next( ) )
{ System.out.println( rs.getString(“ID") );
}
// or
while( rs.next( ) )
{ System.out.println( rs.getString(1) );
// first column of the resultset
}
fini
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
Example of executeQuery( )
ResultSet rs;
rs = stmt.executeQuery (“select * from Member”);
while ( rs.next ( ) )
{
int memID= rs.getInt (1);
String mName = rs.getString (2);
System.out.println (“Member Id:” + memID +
“Member Name:”+ mName);
}
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
22
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
Updatable ResultSet
…
Statement stmt =
con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
String query = " select students, grade from class
where type=‘attending’ “;
ResultSet rs = stmt.executeQuery( query );
…
while ( rs.next() )
{
int grade = rs.getInt(“grade”);
rs.updateInt(“grade”, grade+10);
rs.updateRow();
}
23
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
ResultSet rs = sp.executeQuery();
- - - Should just be p
ANALYZE TABLE T; This helps to analyse the table
} // end loop EXPLAIN SELECT Will show you diff plans that exist and how expensive they are
Driver
import java.sql.*;
static String DRIVER =
“com.mysql.jdbc.Driver”; Database
Class.forName ( DRIVER );
Connection conn = DriverManager.getConnection (
"jdbc:oracle:thin:@server.cs.uct.ac.za:1521:CS01",login,passwd);
while (res.next() )
{ myFunc (res.getString(1), res.getInt(2), res.getString(3) );
}
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
• stmt.close();
• con.close();
25
Downloaded by X Gaming (xmehedi1210@gmail.com)
lOMoARcPSD|50347845
Example
27
Example
28
Example
29
You must be able to name, & explain, & state the purpose of:
JDBC
result sets
prepared statements
EXPLAIN
The remaining details in these slides are for future reference,
but not examinable.