JDBC Tutorial: MIE456 - Information Systems Infrastructure II

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 16

JDBC Tutorial

MIE456 -
Information Systems Infrastructure II

Vinod Muthusamy
November 4, 2004
Milestone 2 overview
 RMI
 ApptController interface given
 Write ApptControllerServer (implement ApptController)
 Write ApptControllerClient
 JDBC
 Write ApptRepositoryDB (extend ApptRepository)
 Must translate all calls to SQL statements

GUI Server Database


RMI JDBC
Java Database Connectivity
(JDBC)
 An interface to communicate with a relational
database
 Allows database agnostic Java code
 Treat database tables/rows/columns as Java objects
 JDBC driver
 An implementation of the JDBC interface
 Communicates with a particular database

JDBC Database
calls JDBC
JDBC
JDBC commands
Java app Database
Database
Database
driver
driver
driver
Eclipse JDBC setup
 Install driver
 Download MySQL JDBC driver from assignment
Web page
 Unzip mysql-connector-xxx.jar
 Add mysql-connector-xxx.jar to Eclipse project
 Project  Properties  Java Build Path  Libraries
 Add External JARs
JDBC steps
1. Connect to database
2. Query database (or insert/update/delete)
3. Process results
4. Close connection to database
1. Connect to database
 Load JDBC driver
 Class.forName("com.mysql.jdbc.Driver").newInstance();

 Make connection
 Connection conn = DriverManager.getConnection(url);

 URL
 Format: “jdbc:<subprotocol>:<subname>”
 jdbc:mysql://128.100.53.33/GROUPNUMBER?
user=USER&password=PASSWORD
2. Query database
a. Create statement
 Statement stmt = conn.createStatement();
 stmt object sends SQL commands to database
 Methods
 executeQuery() for SELECT statements
 executeUpdate() for INSERT, UPDATE, DELETE,
statements

b. Send SQL statements


 stmt.executeQuery(“SELECT …”);
 stmt.executeUpdate(“INSERT …”);
3. Process results
 Result of a SELECT statement (rows/columns) returned as a
ResultSet object
 ResultSet rs =
stmt.executeQuery("SELECT * FROM users");

 Step through each row in the result


 rs.next()

 Get column values in a row


 String userid = rs.getString(“userid”);
 int type = rs.getInt(“type”);

users table
userid firstname lastname password type
Bob Bob King cat 0
John John Smith pass 1
Print the users table
ResultSet rs = stmt.executeQuery("SELECT * FROM users");

while (rs.next()) {
String userid = rs.getString(1);
String firstname = rs.getString(“firstname”);
String lastname = rs.getString(“lastname”);
String password = rs.getString(4);
int type = rs.getInt(“type”);
System.out.println(userid + ” ” + firstname + ” ”
+ lastname + ” ” + password + ” ” + type);
}

users table
userid firstname lastname password type
Bob Bob King cat 0
John John Smith pass 1
Add a row to the users table
String str =
"INSERT INTO users
VALUES('Bob', 'Bob', 'King',
'cat', 0)”;

// Returns number of rows in table


int rows = stmt.executeUpdate(str);

users table
userid firstname lastname password type
Bob Bob King cat 0
4. Close connection to
database
 Close the ResultSet object
 rs.close();

 Close the Statement object


 stmt.close();

 Close the connection


 conn.close();
import java.sql.*;
public class Tester {
public static void main(String[] args) {
try {
// Load JDBC driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
// Make connection
String url =
“jdbc:mysql://128.100.53.33/GRP?user=USER&password=PASS”
Connection conn = DriverManager.getConnection(url);
// Create statement
Statement stmt = conn.createStatement();
// Print the users table
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
...
}
// Cleanup
rs.close(); stmt.close(); conn.close();
} catch (Exception e) {
System.out.println("exception " + e);
}
}
Transactions
 Currently every executeUpdate() is “finalized”
right away
 Sometimes want to a set of updates to all fail
or all succeed
 E.g. add to Appointments and Bookings tables
 Treat both inserts as one transaction
 Transaction
 Used to group several SQL statements together
 Either all succeed or all fail
Transactions
 Commit
 Execute all statements as one unit
 “Finalize” updates
 Rollback
 Abort transaction
 All uncommited statements are discarded
 Revert database to original state
Transactions in JDBC
 Disable auto-commit for the connection
 conn.setAutoCommit(false);
 Call necessary executeUpdate() statements
 Commit or rollback
 conn.commit();
 conn.rollback();
References
 JDBC API Documentation
 http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/index.html
 Note: this is a newer JDBC API, but should be mostly
compatible

 Some slide content borrowed from


 http://
java.sun.com/docs/books/tutorial/jdbc/basics/index.html
 http://otn.oracle.co.kr/admin/seminar/data/otn-jdbc.ppt
 http://notes.corewebprogramming.com/student/JDBC.pdf

You might also like