Java Database Connectivity (JDBC) Introduction to JDBC JDBC is a simple API for connecting from Java...

Post on 27-Dec-2015

259 views 4 download

Tags:

Transcript of Java Database Connectivity (JDBC) Introduction to JDBC JDBC is a simple API for connecting from Java...

Java Database Connectivity (JDBC)

Introduction to JDBC• JDBC is a simple API for connecting from Java applications to multiple

databases.

• Lets you smoothly translate between the world of the database, and the world of the Java application.

• The idea of a universal database access API is not a new one. – For example, Open Database Connectivity (ODBC) was developed to create a single

standard for database access in the Windows environment.

• JDBC API aims to be as simple as possible while providing developers with maximum flexibility.

Understanding JDBC Drivers• To connect to a database

– , you first need a JDBC Driver.

• JDBC Driver: – set of classes that interface

with a specific database engine.

Java Application

JDBC Driver Manager

JDBC-ODBC Bridge

VendorSpecific

JDBC Driver

VendorSpecific

ODBC Driver

Database

Database

Diagram Source: Marty Hall,Core Web Programming(Prentice Hall.)

JDBC Drivers

• JDBC drivers exist for every major database including: – Oracle, SQL Server, Sybase, and MySQL.

• We will use MSAccess Data base,Microsoft’s ODBC driver,Sun’s JDBC-ODBC bridge.

Java Program uses JDBC API

ODBC Data Source

JDBC-ODBC bridge converts these calls to ODBC

Your tables in MSAcess

}do

manually

}do in

pgm

java.sql• The package comprising the core JDBC API is called

java.sql

• We use a simple MS Access database, which means that the inbuilt JDBC-ODBC bridge driver can be employed

• If you wish to experiment with other databases, place

the appropriate JDBC driver within folder java\jre\lib\

ext.

Creating an ODBC Data Source

Creating an ODBC Data Source

1. First , it is necessary to register the database as an

ODBC Data Source.

2. Once this has been done, the database can be

referred to by its Data Source Name (DSN).

steps to set up your own ODBC Data Source(only for ODBC databases!)

Simple Database Access

Using JDBC to access a database requires several steps

Using JDBC to access a database requires several steps

1.Load the Database Driver

• class is used to hold methods that operate upon other

classes in order to furnish details of their characteristics

• forName method of class

Using JDBC to access a database requires several steps

2. Establish a Connection to the Database

• declare a Connection reference

• call static method getConnection of class DriverManager to

return a Connection object

• Method getConnection takes three String arguments:1. a URL-style address for the database;2. a user name;3. a password.

Using JDBC to access a database requires several steps

2. Establish a Connection to the DatabaseAddress format: jdbc:<sub-protocol>:<data-source>

• <sub-protocol> specifies a database connection service

(i.e., a driver)

• <data-source> provides all the information needed

by the service to locate the database

Using JDBC to access a database requires several steps

2. Establish a Connection to the Database

Assuming that our Finances database is indeed local and that we

did not set a user name or password for this database

If this same database were remote

Using JDBC to access a database requires several steps

3. Create a Statement Object and Store its Reference

• Call createStatement () method of our Connection object

• Save the address of the object returned in a Statement

reference.

Using JDBC to access a database requires several steps

4. Run a Query/Update and Accept the Result(s)

• Class Statement has methods to execute queries:

1. executeQuery () to retrieve data from a database

2. executeUpdate() to change the contents of the

database• The former method returns a ResultSet object,

• latter returns an integer that indicates the number of database

rows that have been affected by the updating operation.

Using JDBC to access a database requires several steps

4. Run a Query/Update and Accept the Result(s)

Using JDBC to access a database requires several steps

4. Run a Query/Update and Accept the Result(s)

Using JDBC to access a database requires several steps

5. Manipulate/Display/Check Result(s)

• The only method of ResultSet that we need to make use of at

present is next, which moves the ResultSet cursor/pointer to

the next row in the set of rows referred to by that object.

• We can retrieve data via either the field name or the field

position using the appropriate getXXX () method

5. Manipulate/Display/Check Result(s)

5. Manipulate/Display/Check Result(s)

6. Repeat Steps 4 and 5 as Required

7.Close the Connection

Modifying the Database Contents

• Database Update Statements : • INSERT• DELETE• UPDATE

• Update statements are submitted via the

executeUpdate() method of statement

interface

Modifying the Database Contents

Modifying the Database Contents

Example:

Example:

Example:

Example:

Example:

Example:

Example:

Transactions

Transactions• one or more SQL statements that may be grouped together as a

single processing entity

• We want either all the statements or none of them to be

executed.

• Java provides the Connection interface methods

1. commit used at the end of a transaction to

commit/finalise the database changes

2. rollback used to restore the database to the state

it was in prior to the current transaction

Transactions• By default, JDBC automatically commits each individual SQL

statement that is applied to a database.

• In order to change this default behaviour so that transaction

processing may be carried out, we must first execute Connection

method setAutoCommit with an argument of false

• We can then use methods commit and rollback to effect

transaction processing.

Transactions

Meta Data

Meta Data

• 'data about data‘

• Two categories of meta data available through the

JDBC API:• data about the rows and columns returned by a query (i.e.,

data about ResultSet objects);

• data about the database as a whole.

The first of these is provided by interface ResultSetMetaData, an

object of which is returned by the ResultSet method getMetaData

Meta Data

• data about the rows and columns is provided by interface

ResultSetMetaData, an object of which is returned by the

ResultSet method getMetaData

• Data about the database as a whole is provided by interface

DatabaseMetaData, an object of which is returned by the

Connection method getMetaData

Meta Data

• Information available from a ResultSetMetaData

object includes the following:• the number of fields/columns in a ResultSet object;

• the name of a specified field;

• the data type of a field;

• the maximum width of a field;

• the table to which a field belongs.

Meta Data

• SQL types is represented in class java.sql.Types

INTEGER and VARCHAR are particularly commonplace, the latter

of these corresponding to string values.

Meta Data

• The example coming up makes use of the following

ResultSetMetaData methods, which return properties

of the database fields held in a ResultSetMetaData

object.

Meta Data

Meta Data

Meta Data

Meta Data

Meta Data

Meta Data

Meta Data

Meta Data

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

With the emergence of JDBC 2 in Java 2, however, a great deal more

flexibility was made available to Java programmers by the

introduction of the following ResultSet methods:

Scrollable ResultSets in JDBC 2

• results.relative(-3); //Move back 3 rows.

• results.absolute(3); // Move to row 3 (from start of

ResultSet).

• An overloaded form of the Connection method createStatement

is used to create scrollable ResultSets. This method that takes

two integer arguments.

Scrollable ResultSets in JDBC 2

• There are three possible values that

<resultSetType> can take:

• TYPE_SCROLL_SENSITIVE causes any changes made to the data

rows to be reflected dynamically in the ResultSet object, while

TYPE_SCROLL_INSENSITIVE does not.

Scrollable ResultSets in JDBC 2

• <resultSetConcurrency> can take two possible

values

the first means that we cannot make changes to the

ResultSet rows, while the second will allow changes to

be made

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Scrollable ResultSets in JDBC 2

Modifying Databases via Java

Methods

Modifying Databases via Java Methods

• With of JDBC 2 we can modify ResultSet rows directly via Java

methods

• Without having to send SQL statements

• the changes reflected in the database itself!

To do this:

1. use the second version of createStatement

2. supply ResultSet.CONCUR_UPDATABLE as the second

argument.

Modifying Databases via Java Methods

• The updateable ResultSet object does not have to be

scrollable

Modifying Databases via Java Methods

• A set of updateXXX methods are used to update database.

• Each of these methods takes two arguments:

• a string specifying the name of the field to be

updated;

• a value of the appropriate type that is to be

assigned to the field

1. Updating

There are three steps involved in the process of updating:

2. Insertion

For an insertion, the new row is initially stored within a special

buffer called the 'insertion row' and there are three steps

involved in the process:

2. Insertion

3. Delete

Example :

Sample Output