COMP201 Java Programming

30
COMP201 Java Programming Topic 15: Database Connectivity JDBC Reading: Chapter 4, Volume 2

description

COMP201 Java Programming. Topic 15: Database Connectivity JDBC Reading: Chapter 4, Volume 2. Objective & Outline. Objective: Introduction: How to connect to and communicate with databases Outline: Database basics Connecting to a database with JDBC - PowerPoint PPT Presentation

Transcript of COMP201 Java Programming

Page 1: COMP201 Java Programming

COMP201 Java Programming

Topic 15: Database Connectivity

JDBC

Reading: Chapter 4, Volume 2

Page 2: COMP201 Java Programming

COMP201 Topic 15 / Slide 2

Objective & Outline

Objective: Introduction: How to connect to and communicate with databases

Outline: Database basics Connecting to a database with JDBC Querying and manipulating databases with JDBC

Page 3: COMP201 Java Programming

COMP201 Topic 15 / Slide 3

Database Basics

A (relational) database: a collection of tables Attributes: names of columns Records or entries: rows

Example:

testdb.mdb 4 tables

Page 4: COMP201 Java Programming
Page 5: COMP201 Java Programming
Page 6: COMP201 Java Programming

COMP201 Topic 15 / Slide 6

Database Basics

Database management systems (DBMS): allow user to manipulate data

Many DBMS available. We will use Microsoft Access, which comes with Microsoft Office.

Page 7: COMP201 Java Programming

COMP201 Topic 15 / Slide 7

Database Basics Task:

Find all books by “Fox, David”, list author name, title, publisher name and price

The query involves all four tables and

Page 8: COMP201 Java Programming

COMP201 Topic 15 / Slide 8

Database Basics The query: Select2 in testmd.db

Page 9: COMP201 Java Programming

COMP201 Topic 15 / Slide 9

Database Basics Task: Find all books published by McGraw-Hill

Select3 in testdb

Page 10: COMP201 Java Programming

COMP201 Topic 15 / Slide 10

Database Basics

Update: Modify records Insert new records Delete records Create new Table ….

Page 11: COMP201 Java Programming

COMP201 Topic 15 / Slide 11

Database Basics So far, interact with database manually

Usually interact with databases via application programs

The structured query language (SQL): Standard language for accessing databases:.

Query database using SELECT statements Select all elements in the Books table:

SELECT * FROM Books

Select only some columnsSELECT ISBN, Price, Title

FROM Books

Page 12: COMP201 Java Programming

COMP201 Topic 15 / Slide 12

Database Basics Select from multiple tables

Find all books by “Fox, David”, list author name, title, publisher name and price

SELECT Authors.Name, Books.Title, Publishers.Name, Books.Price

FROM Books, Authors, Publishers, BooksAuthors WHERE Publishers.Publisher_Id = Books.Publisher_Id AND Books.ISBN = BooksAuthors.ISBN AND BooksAuthors.Author_Id = Authors.Author_Id AND Authors.Name= 'Fox, David'

When we select from multiple tables, a joint table is formed. The joint table consists of ALL possible combinations of rows from all the tables.

The first three conditions in the WHERE clause constrain the query to legal combinations.

Page 13: COMP201 Java Programming

COMP201 Topic 15 / Slide 13

Database Basics Update:

Slash prices for McGraw-Hill books by 0.5 UPDATE Books

SET Price = Price -0.5WHERE Books.Publisher_Id = ‘00791’

A more intuitive wayUPDATE Books SET Price = Price -0.5WHERE Books.Publisher_Id = ( SELECT Publisher_Id FROM Publishers WHERE Name = 'McGraw-Hill‘)

Page 14: COMP201 Java Programming

COMP201 Topic 15 / Slide 14

Objective & Outline

Outline: Database basics Connecting to a database with JDBC Querying and manipulating databases with JDBC

Page 15: COMP201 Java Programming

COMP201 Topic 15 / Slide 15

JDBC-to-database communication path

Connecting to Databases with JDBC

Will discuss this path using testdb.mdb

Textbook discusses this path using testdb.mdb

Java Application

JDBC Driver Manager

JDBC/ODBC bridge

Vendor supplied JDBC driversODBC

Database

Page 16: COMP201 Java Programming

COMP201 Topic 15 / Slide 16

Connecting to Databases with JDBC

JDBC -- Java Database Connectivity kit : Programs written according to the JDBC API would talk to the JDBC

driver manager, which in turn, would use the drivers that were plugged into it at that moment to talk to the actual database. JDBC consists of two layers. 1. JDBC API, it communicates with the JDBC manager driver API, sending

it the various SQL statements.2. The manager should communicate with the various third-party drivers

that actually connect to the database and return the information from the query or perform the action specified by the query.

Package: java.sql DriverManager: class for making connection to databases Connection: interface for communicating with databases once

connection has been established. Other interfaces: Statement, ResultSet,

DatabaseMetaData, ResultSetMetaData, SQLException, ….

Page 17: COMP201 Java Programming

COMP201 Topic 15 / Slide 17

To establish connection, DBMS must provide JDBC drivers

PointBase Mobile Edition: DBMS in java by PointBase Inc.– JDBC driver: com.pointbase.jdbc.jdbcDriver

Microsoft Access & many other DBMS– Has a C interface called ODBC (Open DataBase Connectivity)

– The JDBC/ODBC bridge sun.jdbc.odbc.JdbcOdbcDriver provided by Sun

See java.sun.com/products/jdbc/driverdesc.html for DBMS with JDBC drivers

Connecting to Databases with JDBC

Page 18: COMP201 Java Programming

COMP201 Topic 15 / Slide 18

Next: Register testdb.mdb with the ODBC Data Source Administrator on your PC.

Register JDBC driver (sun.jdbc.odbc.JdbcOdbcDriver ) with DriverManager

Making connection

Connecting to Databases with JDBC

Java Application

JDBC Driver Manager

JDBC/ODBC bridge

Vendor supplied JDBC driversODBC

Database

Page 19: COMP201 Java Programming

COMP201 Topic 15 / Slide 19

Register testdb.mdb with the ODBC Datasource Administer on your PC. Instructions: Open Control Panel and select ODBC Data Sources [32bit]

(under Administrative Tools). You will get the window shown on the right. Click on Add.

Connecting to Databases with JDBC

Page 20: COMP201 Java Programming

COMP201 Topic 15 / Slide 20

Select Microsoft Access Driver and then click on Finish. You will get the window shown on the right.

Provide a name for the data source, say TestDB. Click and Select and select testdb.mdb from file system (picture

on the next page)

Connecting to Databases with JDBC

Page 21: COMP201 Java Programming

COMP201 Topic 15 / Slide 21

Then you see the picture on the right. Simply click on OK and the registration is complete.

Thereafter the database testdb.mdb is known as TestDB to the ODBC Datasource Adminstrator.

For JDBC, URL for the database is: jdbc:odbc:TestDB

Connecting to Databases with JDBC

Page 22: COMP201 Java Programming

COMP201 Topic 15 / Slide 22

Register JDBC driver (sun.jdbc.odbc.JdbcOdbcDriver ) with DriverManager Method 1:

– set system property( ~/.hotjava/properties )

System.setProperty("jdbc.drivers", "sun.jdbc.odbc.JdbcOdbcDriver");

– At initialization, DriverManager loads all driver classes referenced in jdbc.drivers

Method 2: Load driver explicitly at any timeClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");

A call to forName("X") causes the class named X to be initialized.

Connecting to Databases with JDBC

Java Application

JDBC Driver Manager

JDBC/ODBC bridge

Vendor supplied JDBC drivers

ODBC

Database

Page 23: COMP201 Java Programming

COMP201 Topic 15 / Slide 23

Making connection

Connection con=DriverManager.getConnection("jdbc:odbc:TestDB", "", "");

java.sql.Connection: represents a connection to a DB. Several drivers might have been registered with the DriverManager. The

DriverManager will find one that can use the protocol on the database URL.

Connecting to Databases with JDBC

URL for database

DB passwordDB user name

Page 24: COMP201 Java Programming

COMP201 Topic 15 / Slide 24

Connection examples

ConnectMe1.java: register JDBC driver using the first method ConnectMe.java: register JDBC driver using the second method

Note. Examples (including testdb.mdb) in this topic are packaged in the zip. See the code page

Connecting to Databases with JDBC

Page 25: COMP201 Java Programming

COMP201 Topic 15 / Slide 25

Objective & Outline

Outline: Database basics Connecting to a database with JDBC Querying and manipulating databases with JDBC

Page 26: COMP201 Java Programming

COMP201 Topic 15 / Slide 26

Querying and Manipulating Databases with JDBC

getConnection returns an object of java.sql.ConnectionConnection con =

DriverManager.getConnection("jdbc:odbc:TestDB","", "");

To execute SQL queries and commands, we first need to get a java.sql.Statement (interface in java.sql) object

Statement stmt = con.createStatement();The object used for executing a static SQL statement and returning the results it produces.

Next: Queries Commands (updates)

Page 27: COMP201 Java Programming

COMP201 Topic 15 / Slide 27

Form query as a stringString query = "SELECT ISBN, Title, Price " + "FROM Books";

Call the executeQuery method of the Statement interfaceResultSet rs = stmt.executeQuery( query );

Which returns an object of the java.sql.ResultSet interface.

A table of data representing a database result set, which is usually generated by executing a statement that queries the database.

Analysis of result:while (rs.next()){ for (int i = 1; i <= 3; i++)

System.out.print( rs.getString(i) + " | ");System.out.println("");

}

Querying and Manipulating Databases with JDBC

Select1.java

Database column number starts at 1

Page 28: COMP201 Java Programming

COMP201 Topic 15 / Slide 28

More complex queries Select2.java: Find all books by David Fox and print out author

name, title, publisher name, and price.

String query =

"SELECT Authors.Name, Books.Title, Publishers.Name, Books.Price " + "FROM Books, Authors, Publishers, BooksAuthors " + "WHERE Publishers.Publisher_Id = Books.Publisher_Id " + "AND Books.ISBN = BooksAuthors.ISBN " + "AND BooksAuthors.Author_Id = Authors.Author_Id " + "AND Authors.Name= 'Fox, David' ";

Querying and Manipulating Databases with JDBC

Page 29: COMP201 Java Programming

COMP201 Topic 15 / Slide 29

More complex queries Select3.java: Find all books published by McGraw-Hill and print

out author name, title, publisher name, and price

String query =

"SELECT Authors.Name, Books.Title, Publishers.Name, Books.Price " + "FROM Books, Authors, Publishers, BooksAuthors " + "WHERE Publishers.Publisher_Id = Books.Publisher_Id " + "AND Books.ISBN = BooksAuthors.ISBN " + "AND BooksAuthors.Author_Id = Authors.Author_Id " + "AND Publishers.Name= 'McGraw-Hill' ";

Querying and Manipulating Databases with JDBC

Page 30: COMP201 Java Programming

COMP201 Topic 15 / Slide 30

Commands: modify records, insert new records, delete records, ….

Form command as a string

String command = "UPDATE Books " +

"SET Price = Price - 0.5" +

" WHERE Books.Publisher_Id = 'McGraw-Hill'";

Call the executeUpdate method of the Statement interface

stmt.executeUpdate( command );

Querying and Manipulating Databases with JDBC

Update.java