JDBC provides a standard Java API for connecting Java applications to relational databases. It defines interfaces for establishing a connection to a database, sending SQL statements, processing results, and handling errors. There are four types of JDBC drivers that implement the API in different ways, including bridge drivers, native drivers, network protocol drivers, and pure Java drivers.
2. JDBC
JDBC is an alternative to ODBC and ADO that provides
database access to programs written in Java.
JDBC drivers are available for most DBMS
products:
http://java.sun.com/products/jdbc
3. JDBC
Java API for connecting programs written in Java to the
data in relational databases
The standard defined by Sun Microsystems, allowing
individual providers to implement and extend the
standard with their own JDBC drivers.
Tasks of JDBC:
1) establishes a connection with a database
2) sends SQL statements
3) processes the results
4. JDBC
The JDBC API supports both two-tier and three-tier
models for database access.
Two-tier model - a Java applet or application interacts
directly with the database.
Three-tier model - introduces a middle-level server for
execution of business logic:
The middle tier to maintain control over data access.
The user can employ an easy-to-use higher-level API
which is translated by the middle tier into the
appropriate low-level calls.
5.
6. JDBC provides API or Protocol to interact
with different databases.
With the help of JDBC driver we can
connect with different types of
databases.
Driver is must needed for connection
establishment with any database.
A driver works as an interface between
the
client and a database server.
7. JDBC have so many classes and
interfaces that allow a Java application to
send request made by user to any
specific DBMS(Data Base Management
System).
JDBC supports a wide level of portability.
JDBC provides interfaces that are
compatible with java application
8.
9. Establish a connection
Begin transaction
Create a statement object
Associate SQL with the statement object
Provide values for statement parameters
Execute the statement object
Process the results
End transaction
Release resources
10. Load the driver:
• The driver class libraries need to be in the
CLASSPATH for the Java compiler and for the
Java virtual machine.
• The most reliable way to load the driver into
the program is:
Class.forName(string).newInstance();
11. Establish a connection to the database:
• A connection URL string includes the
literal jdbc:, followed by the name of
the driver and a URL to the database
String url =
"jdbc:oracle:thin:@localhost:1521:csodb";
jdbc “subprotocol”“subname” host port database
• Create a Connection object:
Connection con = DriverManager.getConnection(url,
dbUser,dbPassword);
12. Begin the transaction
con.setTransactionIsolation(
Connection.TRANSACTION_SERIALIZABLE );
con.setAutoCommit( false );
Create a statement object
Statement stmt = conn.createStatement();
Associate SQL with the statement object
String queryString = "create table students "
+ "(name varchar(30), id int, phone char(9))";
13. Process the statement:
Example statements:
ResultSet rs = stmt.executeQuery(querystring);
Int result = stmt.executeUpdate(updatestring);
ResultSetMetaData rsMeta = rs.getMetaData();
• Compiled queries can be processed via a
PreparedStatement object
• Stored procedures can be processed via a
CallableStatement object
16. Java Application talks
directly to the
database
Accomplished
through the JDBC
driver which sends
commands directly to
the database
Results sent back
directly to the
application
Application Space
Java Application
JDBC Driver
Database
SQL
Command
Result
Set
17. JDBC driver sends
commands to a
middle tier, which
in turn sends
commands to
database.
Results are sent
back to the middle
tier, which
communicates
them back to the
application
Application Space
Java Application
JDBC Driver
Database
SQL
Command
Result
Set
Application Server
(middle-tier)
Proprietary
Protocol
18. The JDBC type 1 driver which is also
known as a JDBC-ODBC Bridge is a
convert JDBC methods into ODBC
function calls.
Sun provides a JDBC-ODBC Bridge driver
by "sun.jdbc.odbc.JdbcOdbcDriver".
19. The driver is a platform dependent
because it uses ODBC which is depends
on native libraries of the operating
system and also the driver needs other
installation for example, ODBC must be
installed on the computer and the
database must support ODBC Driver
20. Type 1 is the simplest compare to all
other driver but it's a platform specific
i.e. only on Microsoft platform.
The JDBC-ODBC Bridge is use only when
there is no PURE-JAVA driver available
for a particular database.
21.
22. Process:
Java Application -> JDBC APIs JDBC
Driver Manager —» Type 1 Driver —» ODBC
Driver —> Database library APIs —> Database
Advantage:
(1) Connect to almost any database on any
system, for which ODBC driver is installed.
(2) It's an easy for installation as well as
easy(simplest) to use as compare the all other
driver.
23. Disadvantage:
(1) The ODBC Driver needs to be installed on
the client machine.
(2) It's a not a purely platform independent
because its use ODBC which is depends on
native libraries of the operating system on
client machine.
(3) Not suitable for applets because the ODBC
driver needs to be installed on the client
machine.
24. JDBC:ODBC ( mainly for Desktop
Applications)
Use bridging technology
Requires installation/configuration on
client machines
Not good for Web
25. The JDBC type 2 driver is uses the
libraries of the database which is
available at client side and this driver
converts the JDBC method calls into
native calls of the database so this driver
is also known as a
Native-API driver.
26.
27. Process:
Java Application -> JDBC APIs JDBC
Driver Manager —» Type 2 Driver —» Vendor
Client Database library APIs —> Database
Advantage:
(1) There is no implantation of JDBC-
ODBC Bridge so it's faster than a type 1
driver; hence the performance is better as
compare the type 1 driver
(JDBC-ODBC Bridge).
28. Disadvantage
(1) On the client machine require the extra
installation because this driver uses the vendor
client libraries.
(2) The Client side software needed so cannot
use such type of driver in the web-based
application.
(3) Not all databases have the client side
library.
(4) This driver supports all JAVA applications
eXCept applets.
29. Native API Drivers (Vendor Specific
drivers)
Requires installation/configuration on
client machines
Used to leverage existing CLI libraries
Usually not thread-safe
Mostly obsolete now
30. The JDBC type 3 driver uses the middle
tier(application server) between the
calling program and the database and
this middle tier converts JDBC method
calls into the vendor specific database
protocol and the same driver can be
used for multiple
databases also so it's also known as a
Network-Protocol driver as well as a JAVA
driver for database middleware.
31.
32. Process
Java Application —> JDBC APIs -> JDBC
Driver Manager —> Type 3 Driver —> Middleware
(Server)—> any Database
Advantage:
(1) There is no need for the vendor database
library on the client machine because the
middleware is database independent and it
communicates with
client.
33. (2) Type 3 driver can be used in any web
application as well as on internet also because
there is no anv software require at client side.
(3) A single driver can handle any database at
client side so there is no need a Separate
driver for each database.
(4) The middleware server can also provide the
typical services such as connections, auditing,
load balancing, logging etc.
34. Disadvantage:
(1) An Extra layer added, may be time
consuming.
(2) At the middleware develop the database
specific coding, may be increase complexity.
35. Network API
Calls middleware server, usually on
database host
Very flexible & allows access to multiple
databases using one driver
Only need to download one driver
But it's another server application to
install and maintain.
36. The JDBC type 4 driver converts JDBC
method calls directly into the vendor
specific database protocol and in
between do not need to be converted
any other formatted system so this is the
fastest way to communicate quires to
DBMS and it is completely written in
JAVA because of that this is also known as
the "direct to database Pure JAVA driver".
37.
38. Disadvantage:
(1) There is a separate driver needed for
each database at the client side.
(2) Drivers are Database dependent, as
different database vendors use different
network protocols.
39. Network Protocol Driver (used for
Network based Applications)
Pure Java Drivers
Use Java networking libraries to talk
directly to database engines need to
download a new driver for each database
engine.
45. A Connection represents a session with a specific
database or a session between an application and
a database
Within the context of a Connection, SQL
statements are executed and results are returned.
Can have multiple connections to a database
Also provides “metadata” -- information about the
database, tables, and fields
Also methods to deal with transactions
50. A ResultSet provides access to a table of data
generated by executing a Statement.
Logical set of columns and rows returned by
executing an SQL statement
Only one ResultSet per Statement can be open
at once.
The table rows are retrieved in sequence.
A ResultSet maintains a cursor pointing to its
current row of data.
The 'next' method moves the cursor to the next
row.
• you can’t rewind
76. Scrollable result set
Batch updates
Advanced data types
• Blobs, objects, structured types
Rowsets
• Persistent JavaBeans
JNDI
Connection Pooling
Distributed transactions via JTS
77. In JDBC1.0, result sets could be
navigated in only one direction (forward)
and starting at only one point (first row)
Since JDBC 2.0, the cursor can be
manipulated as if it were a array index
Methods exist for reading both forward
and backward, for starting from any row,
and for testing the current cursor
location.
78. boolean next ( ) Advances the cursor to the next row.
boolean previous ( ) Moves the cursor back one row.
boolean first ( ) Moves the cursor to the first row.
boolean last ( ) Moves the cursor to the last row.
void beforeFirst ( ) Moves the cursor before the first
row, usually in anticipation of
calling next ( )
void afterLast ( ) Moves the cursor after the last row,
usually in anticipation of
calling previous ( )
boolean Moves the cursor to the specified
absolute (int row) row. Specifying a negative number
moves the cursor relative to the
end of the result set;
79. boolean Moves the cursor forward or
relative (int row) backward the number of rows
specified.
boolean True if the cursor is before the
isBeforeFirst ( ) first row.
boolean True if the cursor is after the
isAfterLast ( ) last row.
boolean isFirst ( ) True if the cursor is positioned on
the first row.
boolean isLast ( ) True if the cursor is positioned on
the last row.
80. Statement object created with parameters to
indicate specific capabilities
Connection.createStatement() method can have
up to three parameters:
• resultSetType – type of scrolling to be used
• resultSetConcurrency – indicates whether the result
set can be updated
• resultSetHoldability – specifies whether to close
cursors when a commit is done
Example
• stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
81. Cursor Related Constants
• TYPE_FORWARD_ONLY
JDBC 1.0-style navigation in which the cursor
starts at the first row and can only move forward.
• TYPE_SCROLL_INSENSITIVE
All cursor positioning methods are enabled; the
result set doesn’t reflect changes made by others
in the underlying table.
• TYPE_SCROLL_SENSITIVE
All cursor positioning methods are enabled the
result set reflects changes made by others in the
underlying table.
82. Updating Record Sets
• CONCUR_READ_ONLY
The results set won’t be updatable
• CONCUR_UPDATABLE
Rows can be added and deleted, and columns
can be updated.
Closing Cursors
• HOLD_CURSORS_OVER_COMMIT
Do not close cursors after a commit is done.
• CLOSE_COURSORS_AT_COMMIT
Close cursors when a commit is done.