Download Java Database Connectivity (JDBC)

Document related concepts

SQL wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Microsoft Access wikipedia , lookup

Serializability wikipedia , lookup

IMDb wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Oracle Database wikipedia , lookup

PL/SQL wikipedia , lookup

Ingres (database) wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Functional Database Model wikipedia , lookup

Database wikipedia , lookup

Concurrency control wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Relational model wikipedia , lookup

Versant Object Database wikipedia , lookup

Clusterpoint wikipedia , lookup

ContactPoint wikipedia , lookup

Database model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Transcript
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
Java Application
– , you first need a JDBC Driver.
• JDBC Driver:
– set of classes that interface
with a specific database
engine.
JDBC Driver Manager
JDBCODBC
Bridge
Vendor
Specific
JDBC Driver
Vendor
Specific
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.
}do in
Java Program uses JDBC API
JDBC-ODBC bridge converts these calls to ODBC
ODBC Data Source
Your tables in MSAcess
pgm
}do
manually
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
java\jre\lib\ext.
JDBC
driver
within
folder
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 Database
Address 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
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
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