Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of...

14
Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt http://www.cs.gmu.edu/~offutt/ SWE 432 Design and Implementation of Software for the Web

Transcript of Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of...

Page 1: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

Introduction to JDBC

Michelle Lee, Ye Wu & Jeff Offutt

http://www.cs.gmu.edu/~offutt/

SWE 432

Design and Implementation of Software for the Web

Page 2: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 2

JDBC

• JDBC (Java Database Connectivity) API allows Java programs to connect to databases

• Database access is the same for all database vendors

• The JVM uses a JDBC driver to translate generalized JDBC calls into vendor specific database calls

• There are four general types of JDBC drivers– We will look at Type 4 …

Page 3: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 3

Pure Java Driver (Type 4)

• These drivers convert the JDBC API calls to direct network calls using vendor-specific networking protocols by making direct socket connections with the database

• It is the most efficient method to access database, both in performance and development time

• It is the simplest to deploy

• All major database vendors provide pure Java JDBC drivers for their databases and they are also available from third party vendors

• For a list of JDBC drivers, refer to– http://industry.java.sun.com/products/jdbc/drivers

Page 4: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 4

JavaApplication

DB Client

Pure Java Driver (2)

JDBC API

JDBC Driver

Data Source

Server

Page 5: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 5

Typical JDBC Programming Procedure

1. Load the database driver

2. Obtain a connection

3. Create and execute statements (SQL queries)

4. Use result sets (tables) to navigate through the results

5. Close the connection

Page 6: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 6

Driver Manager

• The purpose of the java.sql.DriverManger class in JDBC is to provide a common access layer on top of different database drivers used in an application

• DriverManager requires that each driver required by the application must be registered before use, so that the DriverManager is aware of it

• Load the database driver using ClassLoader :– Class.forName (“oracle.jdbc.driver.OracleDriver”);

Page 7: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 7

Connecting to a Database

• Type 4 JDBC Driver – Oracle Server

Class.forName (“oracle.jdbc.driver.OracleDriver”);con = DriverManager.getConnection (

“jdbc:oracle:thin:@bonsai.ite.gmu.edu:1521:ite”, “accountname", “password”);

• Type 4 JDBC Driver – MySQL Server

Class.forName (“org.gjt.mm.mysql.Driver”);con = DriverManager.getConnection

(“jdbc:mysql://localhost/databasename”, uid, passwd);

Page 8: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 8

Creating Tables

• Creating a Coffee tableCREATE TABLE COFFEES (COF_NAME VARCHAR(32), SUP_ID

INTEGER, PRICE FLOAT, SALES INTEGER, TOTAL INTEGER)

• Creating JDBC statementsStatement stmt = con.createStatement ();

• Execute a statementstmt.executeUpdate (“CREATE TABLE COFFEES “ +

“(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, “ + “SALES INTEGER, TOTAL INTEGER)”);

SQL query

Page 9: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 9

Execute Statements

• This uses executeUpdate because the SQL statement contained in createTableCoffees is a DDL (data definition language) statement

• Statements that create a table, alter a table, or drop a table are all examples of DDL statements and are executed with the method executeUpdate

• executeUpdate is also used to execute SQL statements that update a table

Page 10: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 10

Execute Statements

• In practice, executeUpdate is used far more often to update tables than it is to create them because a table is created once but may be updated many times

• The method used most often for executing SQL statements is executeQuery

• executeQuery is used to execute SELECT statements, which comprise the vast majority of SQL statements

Page 11: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 11

Entering Data into a Table

Statement stmt = con.createStatement();

stmt.executeUpdate ( "INSERT INTO COFFEES " +

"VALUES ('Colombian', 101, 7.99, 0, 0)");

stmt.executeUpdate ( "INSERT INTO COFFEES " +

"VALUES ('French_Roast', 49, 8.99, 0, 0)" );

stmt.executeUpdate ( "INSERT INTO COFFEES " +

"VALUES ('Espresso', 150, 9.99, 0, 0)" );

stmt.executeUpdate ( "INSERT INTO COFFEES " +

"VALUES ('Colombian_Decaf', 101, 8.99, 0, 0)" );

stmt.executeUpdate ( "INSERT INTO COFFEES " +

"VALUES ('French_Roast_Decaf', 49, 9.99, 0, 0)" );

Page 12: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 12

Getting Data From a Table

ResultSet rs = stmt.executeQuery ("SELECT COF_NAME, PRICE FROM COFFEES");

while (rs.next())

{

String s = rs.getString ("COF_NAME");

float n = rs.getFloat ("PRICE");

System.out.println (s + " " + n);

}

Page 13: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 13

JNDI

Connection Manager

JDBC Data Source Architecture

Application JDBC Database

Page 14: Introduction to JDBC Michelle Lee, Ye Wu & Jeff Offutt offutt/ SWE 432 Design and Implementation of Software for the Web.

04/20/23 © Wu, Lee & Offutt 14

Sample code

• Sun JDBC tutorial