jdbc tutorial mie456 - information systems infrastructure ii vinod muthusamy november 4, 2004
TRANSCRIPT
![Page 1: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/1.jpg)
JDBC Tutorial
MIE456 - Information Systems Infrastructure II
Vinod Muthusamy
November 4, 2004
![Page 2: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/2.jpg)
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 DatabaseRMI JDBC
![Page 3: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/3.jpg)
DatabaseDatabaseJDBCdriver
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
Java app DatabaseJDBC calls
Database commandsJDBC
driver
JDBCdriver
![Page 4: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/4.jpg)
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
![Page 5: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/5.jpg)
JDBC steps
1. Connect to database
2. Query database (or insert/update/delete)
3. Process results
4. Close connection to database
![Page 6: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/6.jpg)
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
![Page 7: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/7.jpg)
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 …”);
![Page 8: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/8.jpg)
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
![Page 9: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/9.jpg)
Print the users tableResultSet 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
![Page 10: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/10.jpg)
Add a row to the users table
String str = "INSERT INTO users VALUES('Bob', 'Bob', 'King', 'cat', 0)”;
// Returns number of rows in tableint rows = stmt.executeUpdate(str);
users table
userid firstname lastname password type
Bob Bob King cat 0
![Page 11: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/11.jpg)
4. Close connection to database
Close the ResultSet object rs.close();
Close the Statement object stmt.close();
Close the connection conn.close();
![Page 12: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/12.jpg)
import java.sql.*;
public class Tester {public static void main(String[] args) {
try {// Load JDBC driverClass.forName("com.mysql.jdbc.Driver").newInstance();
// Make connectionString url =
“jdbc:mysql://128.100.53.33/GRP?user=USER&password=PASS”
Connection conn = DriverManager.getConnection(url);
// Create statementStatement stmt = conn.createStatement();
// Print the users tableResultSet rs = stmt.executeQuery("SELECT * FROM users");while (rs.next()) {
...}
// Cleanuprs.close(); stmt.close(); conn.close();
} catch (Exception e) {System.out.println("exception " + e);
}}
![Page 13: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/13.jpg)
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
![Page 14: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/14.jpg)
Transactions
Commit Execute all statements as one unit “Finalize” updates
Rollback Abort transaction All uncommited statements are discarded Revert database to original state
![Page 15: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/15.jpg)
Transactions in JDBC
Disable auto-commit for the connection conn.setAutoCommit(false);
Call necessary executeUpdate() statements Commit or rollback
conn.commit(); conn.rollback();
![Page 16: JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004](https://reader036.vdocuments.net/reader036/viewer/2022082711/56649ea35503460f94ba7eaf/html5/thumbnails/16.jpg)
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