Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
JDBC Overview
Autumn 2001
Lecturer: C. DeJong
Relational Databases
•
•
•
•
•
widespread use
used via SQL (Structured Query Language)
freely available
powerful
text-based
What is JDBC?
• An API for Java database connectivity
• A collection of Java classes from Sun
• A set of interfaces for database
programming
• java.sql.*
Steps for setting up JDBC
• install Java and JDBC (available from
java.sun.com)
• install a driver
• install a relational database
– MySQL, PostgreSQL (free!)
– Oracle, Sybase, IBM’s DB2 (commercial)
Establishing a connection
• Load the database driver
• Make the connection
Loading the driver
• driver should be provided with database
• one line of code:
Class.forName(<driver class name>);
• ex:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Make the connection
• Returns a Connection object
• Syntax:
Connection con =
DriverManager.getConnection(
url, "myLogin",
"myPassword");
URL for connecting
• should be in documentation with JDBC
driver
• starts with “jdbc:”
• can connect across a network
Statements
• used to send SQL to the database
• syntax:
Statement stmt =
con.createStatement();
Using statements
• creating a table
stmt.executeUpdate(
"CREATE TABLE COFFEES "
+ "(COF_NAME VARCHAR(32), SUP_ID
INTEGER, PRICE FLOAT, "
+ "SALES INTEGER, TOTAL INTEGER)");
Using statements
• inserting data
stmt.executeUpdate(
"INSERT INTO COFFEES "
+ "VALUES ('Colombian', 101, 7.99,
0, 0)");
Sample query
• in SQL:
SELECT COF_NAME, PRICE FROM
COFFEES
Query result
COF_NAME
-----------------Colombian
French_Roast
Espresso
Colombian_Decaf
French_Roast_Decaf
PRICE
----7.99
8.99
9.99
8.99
9.99
Retrieving data with ResultSet
• Statements can run a query on a database
• This returns an object.
• This object is a ResultSet.
Running the query in Java
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT COF_NAME, PRICE FROM COFFEES");
Inspecting the ResultSet
while (rs.next()) {
String s =
rs.getString("COF_NAME");
float n = rs.getFloat("PRICE");
System.out.println(s + "
" + n);
}
Output
• The output will look something like this:
Colombian
7.99
French_Roast
8.99
Espresso
9.99
Colombian_Decaf
8.99
French_Roast_Decaf
9.99
alternative syntax
while (rs.next()) {
String s =
rs.getString(1);
float n = rs.getFloat(2);
System.out.println(s + "
}
• note: starts at 1, not 0!
" + n);
some ResultSet retrieval methods
•
•
•
•
•
getString()
getInt()
getFloat()
getObject()
… many others
Closing
• When finished, call close() on
– ResultSet objects
– Statement objects
– Connection objects
• … or you may have a memory leak!
Exceptions
• Most methods on classes in the java.sql
package throw java.sql.SQLException
• SQLException.getMessage() shows
database error
• SQLException is a checked exception
• so: try/catch/finally or throws