Download - JDBC I
Four perspectives on the database Large data store Persistent data store Query service Transaction service
Programmer’s view Not
how it works how to administer it how to design a database
Database services persistent storage sophisticated querying transactions
JDBC Group of Java classes Correspond to basic database concepts
Connecting to the database Issuing a query Examining results
Higher-level option Enterprise JavaBeans
simply state that an object is going to be persistent
the EJB “container” uses JDBC to save the object in a database
SE 554
Database table
1103PaulMcCartney99987
1500JohnLennon99996
1101AaronPresley34345
0124ElvisPresley32324
175FredFlintstone20203
053SuzyQ56782
175RobinBurke12341
Fuel Option
DaysCar type
First name
Last nameIDRow #
Key relationships
175FredFlintstone2020
053SuzyQ5678
175RobinBurke1234
Fuel Option
DaysCar type
First name
Last nameID
SUV5
Luxury4
Full size3
Mid-size2
Compact1
Subcompact0
DescriptionID
Basic terms Table
basic unit of organization Row / Record
single “entry” Column
named attributed of a row View
a dynamically created table Query
an operation on the database typically retrieval of a view
Record set / result set / row set the information returned by a query
SQL Declarative language
not procedural Describe what you want
database figures out “how” In general
do as much in SQL as you can
SQL Language Case insensitive Strings enclosed in single quotes Whitespace ignored Commands for
(creating and structuring databases) retrieving data inserting rows deleting rows
Different versions SQL-92 most widely supported
Complex criteriaSELECT titles.type, titles.title
FROM titles t1
WHERE titles.price >
(SELECT AVG(t2.price)
FROM titles t2
WHERE t1.type = t2.type)
JoinSELECT Reservations.ID, Reservations.LastName,
Reservations.FirstName, CarType.Description, Reservation.Days, FuelOption.Description
FROM Reservations, CarType, FuelOption
WHERE Reservations.CarType = CarType.ID
AND Reservations.FuelOption = FuelOption.ID
Join example
175RobinBurke1234
Fuel Option
DaysCar type
First name
Last nameID
Pre-paid fuel1
DescriptionID
SUV5
DescriptionID
Pre-paid fuel7SUVRobinBurke1234
F.DescriptionR.DaysC.DescriptionR.FirstNameR.LastNameR.ID
JDBC DriverManager
knows how to connect to differents DBs Connection
represents a connection to a particular DB Statement
a query or other request made to a DB ResultSet
results returned from a query
Creating a connectionClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = “jdbc:odbc:mydatabase”;
Connection conn = DriverManager.getConnection(url,
”UserName", ”Password");
Why not “new Connection ()”?
Property file
jdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver
jdbc.url=jdbc:odbc:rentalcars
jdbc.username=PUBLIC
jdbc.password=PUBLIC
Using propertiespublic static Connection getConnection()
throws SQLException, IOException { Properties props = new Properties();
String fileName = “rentalcars.properties"; FileInputStream in = new FileInputStream(fileName);props.load(in);
String drivers = props.getProperty("jdbc.drivers"); if (drivers != null) System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("jdbc.url"); String username = props.getProperty("jdbc.username"); String password = props.getProperty("jdbc.password"); return DriverManager.getConnection(url, username, password);
}
StatementClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = “jdbc:odbc:mydatabase”;
Connection conn = DriverManager.getConnection(url,
”UserName", ”Password");
Statement stmt = conn.createStatement();
Executing a statementClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = “jdbc:odbc:mydatabase”;
Connection conn = DriverManager.getConnection(url,
”UserName", ”Password");
Statement stmt = conn.createStatement();
String sql = “SELECT * FROM Reservations
WHERE (LastName = ‘Burke’);”;
stmt.execute (sql);
ResultSetClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = “jdbc:odbc:mydatabase”;
Connection conn = DriverManager.getConnection(url,
”UserName", ”Password");
Statement stmt = conn.createStatement();
String sql = “SELECT * FROM Reservations
WHERE (LastName = ‘Burke’);”;
ResultSet rs = stmt.executeQuery (sql);
rs.next();
int carType = rs.getInt (“CarType”);
Iteration using ResultSetint totalDays = 0;
String sql = “SELECT * FROM Reservations;”;
ResultSet rs = stmt.executeQuery (sql);
while (rs.next())
{
totalDays += rs.getInt (“Days”);
}
Better solutionint totalDays = 0;
String sql = “SELECT SUM(Days) FROM Reservations;”;
ResultSet rs = stmt.executeQuery (sql);
rs.next();
totalDays = rs.getInt (1);