Database Access through Java

24
CSE470 Software Engineering Fall 2000 1 Database Access through Java

description

Database Access through Java. DBMS Overview. - PowerPoint PPT Presentation

Transcript of Database Access through Java

Page 1: Database Access through Java

CSE470 Software Engineering Fall 2000 1

Database Access through Java

Page 2: Database Access through Java

CSE470 Software Engineering Fall 2000 2

DBMS Overview• A Database Management System (DBMS) is a

system that provides a convenient and efficient way to store and retrieve data and manages issues like security, concurrent access, etc. Today, Relational Database Systems (RDBMS) are the most extensively used DBMS.

• An RDBMS represents data as tables. Each table has a specified set of fields. Each set of values for the fields represents a record in the table. A collection of related tables are grouped together as a ‘database’ in the RDBMS.

Page 3: Database Access through Java

CSE470 Software Engineering Fall 2000 3

DBMS Overview…

• The de-facto standard for communicating with a DBMS is through the use of Structured Query Language (SQL)

Application

DBMS

SQL Results (e.g., records)

Page 4: Database Access through Java

CSE470 Software Engineering Fall 2000 4

SQL Overview

• SQL provides the user a set of statements to access the database. These statements can be classified into two main types:– Statements that specify/modify the structure of

the database, known as DDL (Data Definition) statements (e.g., CREATE TABLE)

– Statements that retrieve, add or modify data in the database, known as DML (Data Manipulation) statements (e.g., SELECT)

Page 5: Database Access through Java

CSE470 Software Engineering Fall 2000 5

SQL Statements• Some commonly used SQL statements are:

– CREATE TABLE : To define the structure of a table– INSERT: To insert record(s) into a table– DELETE: To delete records from a table– UPDATE: To modify existing data in a table– SELECT: To retrieve records from a table

[ Simple syntax for the CREATE TABLE and SELECT statements are provided on the following slides. Examples for these statements are also provided later in the presentation. For more detailed syntax, refer to the MSDN Library ]

Page 6: Database Access through Java

CSE470 Software Engineering Fall 2000 6

SQL – CREATE TABLE

• Syntax:

CREATE TABLE table-name (

field-name1 field-type1[,

field-name2 field-type2] …

)

• Field types are: INTEGER, CHAR, DATETIME, etc.

Page 7: Database Access through Java

CSE470 Software Engineering Fall 2000 7

SQL – SELECT• Syntax:

SELECT {* | field-name1[, field-name2]…}

FROM table-name[WHERE ( condition )]

• ‘*’ selects all fields in the table• The WHERE clause is used to retrieve only those

records that meet a specific condition. Absence of the WHERE clause retrieves all records in the table

Page 8: Database Access through Java

CSE470 Software Engineering Fall 2000 8

JDBC™

• An API for Java applications, to access databases and other tabular data

• Used to build all-Java database applications

• Can interact with multiple database management systems

• Often thought of as an acronym for ‘Java Database Connectivity’

Page 9: Database Access through Java

CSE470 Software Engineering Fall 2000 9

JDBC Architecture

Java Application

JDBC Driver Manager

JDBC API

JDBC Driver API

JDBC Driver Implementation

DBMS Database Server

Page 10: Database Access through Java

CSE470 Software Engineering Fall 2000 10

The JDBC Driver• Key component that enables communication

between the Java application and the data source

• The driver makes it possible for the application to:– Establish a connection with the data source– Send queries and update statements to the data

source– Process results obtained from the data source

Page 11: Database Access through Java

CSE470 Software Engineering Fall 2000 11

How to Start using JDBC• Check that your Java installation includes JDBC API.

The Java 2 SDK Standard Edition includes the JDBC 2.0 core API – the java.sql package. The javax.sql package provides the JDBC Optional Package API. [We will use the Java SDK installed on the Windows 2000 system].

• Check that a JDBC driver is installed. [We will use a JDBC-ODBC bridge driver].

• Check that the DBMS you want to connect to, is setup. [We will use the Microsoft SQL server “ALBORZ”].

• Check that the database you want to connect to has been setup on the DBMS. [The system administrators have setup the required databases].

Page 12: Database Access through Java

CSE470 Software Engineering Fall 2000 12

Using JDBC…• If not already registered, register your database as an

(ODBC) data source [instructions are on the web page]• Establish a connection • Create Tables• Enter data into Tables• Process Data from Tables• Close statements/connections when no longer required

SQL statements are used to create tables, enter/update data in tables and to query the data.

Page 13: Database Access through Java

CSE470 Software Engineering Fall 2000 13

Establishing a Connection• Load the JDBC driver

Example:String driver = “sun.jdbc.odbc.JdbcOdbcDriver”;Class.forName(driver);

• Make the connectionExample:

String url = “jdbc:odbc:alborz”;String user = “sparty”;String pswd = “xyz”;Connection con = DriverManager.getConnection(url, user, pswd);

This statement creates a Connection object, con.[Note: In the above example, “alborz” is the name of the data

source (DSN) as registered with the ODBC driver]

Page 14: Database Access through Java

CSE470 Software Engineering Fall 2000 14

Creating Tables• Build the SQL statement to create a table

– SQL statement to be coded in the application:CREATE TABLE PERSON (

FIRSTNAME CHAR(20),LASTNAME CHAR(20) NOT NULL,DOB DATETIME,TELE INTEGER,CONSTRAINT MYKEY

PRIMARY KEY(FIRSTNAME, LASTNAME))

– Corresponding Java code:String createsql = “CREATE TABLE PERSON” +

“(FIRSTNAME CHAR(20), LASTNAME CHAR(20),” +

“DOB DATETIME, TELE INTEGER, CONSTRAINT” + “MYKEY PRIMARY KEY (FIRSTNAME, LASTNAME))”;

Page 15: Database Access through Java

CSE470 Software Engineering Fall 2000 15

Creating Tables …• Create a JDBC Statement

Example:Statement stmt = con.createStatement();

This statement creates a Statement object, stmt that can pass SQL statements to the DBMS using connection, con.

• Execute the JDBC StatementExample:

stmt.executeUpdate(createsql);

[Note: The method executeUpdate() is used with statements like CREATE, INSERT, UPDATE, etc., that affect either the data or the structure of data stored in the database. For queries (SELECT statements) the method executeQuery() is used]

Page 16: Database Access through Java

CSE470 Software Engineering Fall 2000 16

Entering Data into a Table• Build the SQL INSERT statement

– SQL statement to be coded in the application:INSERT INTO PERSON VALUES (“Sparty”, “Spartan”, “1/1/1855”, 3531855)

– Corresponding Java code:String insertsql = “INSERT INTO PERSON” +

“VALUES (‘Sparty’, ‘Spartan’, ‘1/1/1855’, 3531855)”;

• Create a JDBC Statement, if not already created (as with CREATE TABLE)

• Execute the JDBC Statement with executeUpdate()

Page 17: Database Access through Java

CSE470 Software Engineering Fall 2000 17

Retrieving Data from a Table• Build the SQL SELECT statement

– SQL statement to be coded in the application:

SELECT * FROM PERSON

WHERE (DATEPART(YY, DOB) < 1900)

– Corresponding Java code:String querysql = “SELECT * FROM PERSON” +

“WHERE (DATEPART(YY, DOB) < 1900)”;

• Create a JDBC Statement, if not already created• Execute the JDBC Statement with executeQuery()

ResultSet rs = stmt.executeQuery(querysql);

Page 18: Database Access through Java

CSE470 Software Engineering Fall 2000 18

Processing Data (Result Sets)• Use the first(), next() and last() methods of ResultSets

to scroll through the result set. • Use the getXXX() methods to extract data from the

fields.• The fields can be specified either by their names or

their position in the record.• Example:

while (rs.next()) {String name = rs.getString(1) + rs.getString(2);Timestamp birthday = rs.getTimestamp(“DOB”);Integer tele = rs.getInt(“TELE”);System.out.println(name + “ “ + birthday + “ “ + tele);

}

Page 19: Database Access through Java

CSE470 Software Engineering Fall 2000 19

Closing Statements and Connections• Statement objects that have been created, (for eg.,

using the createStatement() method), have to be closed when they are no longer needed. The close() method is used to close the statement.E.g.: stmt.close();

• All open connections also have to be closed, either when they are no longer required, or before the program terminates.E.g.: con.close()

Page 20: Database Access through Java

CSE470 Software Engineering Fall 2000 20

More SQL – Specifying Foreign Keys

• STUDENTS

Consider the following tables, STUDENTS & GRADES

ID NAME DOJ EMAIL

10001 Sparty 1/1/1855 [email protected]

… … … …

•GRADESSTU_ID COURSE GRADE

10001 MTH101 4.0

10001 CEM101 3.5

… … …

Page 21: Database Access through Java

CSE470 Software Engineering Fall 2000 21

Specifying Foreign Keys…• The table GRADES has a foreign-key relationship

with table STUDENTS, i.e., for every value of STU_ID in GRADES there must be a record with a matching ID in STUDENTS

• The SQL statements to create the two tables will be as follows:– SQL to create table STUDENTS:

CREATE TABLE STUDENTS ( ID INTEGER, NAME CHAR(30), DOJ DATETIME, EMAIL CHAR(30), CONSTRAINT PK_STUDENTS PRIMARY KEY (ID))

Page 22: Database Access through Java

CSE470 Software Engineering Fall 2000 22

Specifying Foreign Keys…

– SQL to create table GRADES, with foreign key

CREATE TABLE GRADES (

STU_ID INTEGER,

COURSE CHAR(6),

GRADE DECIMAL(2,1),

CONSTRAINT PK_GRADES

PRIMARY KEY (STU_ID, COURSE),

CONSTRAINT FK_GRADES FOREIGN KEY (STU_ID) REFERENCES STUDENTS)

Page 23: Database Access through Java

CSE470 Software Engineering Fall 2000 23

References

• JDBC API Tutorial and Reference, Second Edition – White, Fisher, Cattell, Hamilton, Hapner; Addison Wesley

• Understanding SQL and Java Together – Melton, Eisenberg; Morgan Kauffman Publishers

• Deitel & Deitel, “Java How To Program” Third Edition, Prentice Hall Inc.

Page 24: Database Access through Java

CSE470 Software Engineering Fall 2000 24

JDBC Driver Implementation

• Various driver implementations are possible. Most commonly used types are:– Type 1 – JDBC-ODBC bridge: Implements JDBC by

invoking ODBC on the client machine

– Type 2 – Native-API Partly Java Driver: Implements JDBC by making calls to a DBMS native-API on the client machine

– Type 3 – Net-Protocol All-Java Driver: Converts JDBC calls to DBMS-independent net protocol messages. The server then translates these messages to DBMS-specific calls

– Type 4 – Native-Protocol All-Java Driver: Converts JDBC calls directly into the network protocol used by the DBMS

Additional Notes:Additional Notes: