When Javasoft "first hoped to do was to extend Java so that it could talk to
any random database using only "pure" Java. It didn't take them long to realize
that this is an impossible task: there are simply too many databases out there
utilizing too many protocols." (Core2, pg 604)
Much of this is from the JDBC Guide: I have it here so
you don't have to switch around. See also the JDBC Homepage
What Is JDBCTM?
JDBCTM is a JavaTM API for executing SQL statements. (As a point of interest,
JDBC is a trademarked name and is not an acronym; nevertheless, JDBC is often
thought of as standing for "Java Database Connectivity".) It consists of a set of
classes and interfaces written in the Java programming language. JDBC provides a
standard API for tool/database developers and makes it possible to write database
applications using a pure Java API.
Using JDBC, it is easy to send SQL statements to virtually any relational database. In other words, with the JDBC API, it isn't necessary to write one program to access a Sybase database, another program to access an Oracle database, another program to access an Informix database, and so on. One can write a single program using the JDBC API, and the program will be able to send SQL statements to the appropriate database. And, with an application written in the Java programming language, one also doesn't have to worry about writing different applications to run on different platforms. The combination of Java and JDBC lets a programmer write it once and run it anywhere.
The following code fragment gives a basic example of these three steps:
Connection con = DriverManager.getConnection ( "jdbc:odbc:wombat", "login", "password"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); while (rs.next()) { int x = getInt("a"); String s = getString("b"); float f = getFloat("c"); }
In the end, the idea behind JDBC is the same as ODBC (Open DataBase Connect): programs written using the JDBC API would talk to the JDBC driver manager which in turn would use the drivers that were plugged into it at the moment to talk to the actual database.
At this point, Microsoft's ODBC (Open DataBase Connectivity) API is probably the most widely used programming interface for accessing relational databases. It offers the ability to connect to almost all databases on almost all platforms. So why not just use ODBC from Java?
The answer is that you can use ODBC from Java, but this is best done with the help of JDBC in the form of the JDBC-ODBC Bridge, which we will cover shortly. The question now becomes, "Why do you need JDBC?" There are several answers to this question:
The JDBC API supports both two-tier and three-tier models for database access.
In the two-tier model, a Java applet or application talks directly to the database. This requires a JDBC driver that can communicate with the particular database management system being accessed. A user's SQL statements are delivered
to the database, and the results of those statements are sent back to the user. The
database may be located on another machine to which the user is connected via a
network. This is referred to as a client/server configuration, with the user's
machine as the client, and the machine housing the database as the server. The
network can be an intranet, which, for example, connects employees within a corporation, or it can be the Internet.
Three tier model means Java application calls on a middleware layer that in turn accesses the data (e.g. RMI)
Specifically, in the three-tier model, commands are sent to a "middle tier" of services,
which then send SQL statements to the database. The database processes the SQL
statements and sends the results back to the middle tier, which then sends them to
the user. MIS directors find the three-tier model very attractive because the middle tier makes it possible to maintain control over access and the kinds of updates
that can be made to corporate data. Another advantage is that when there is a middle tier, the user can employ an easy-to-use higher-level API which is translated
by the middle tier into the appropriate low-level calls. Finally, in many cases the
three-tier architecture can provide performance advantages.
Until now the middle tier has typically been written in languages such as C or
C++, which offer fast performance. However, with the introduction of optimizing
compilers that translate Java bytecode into efficient machine-specific code, it is
becoming practical to implement the middle tier in Java. This is a big plus, making it possible to take advantage of Java's robustness, multithreading, and security
features. JDBC is important to allow database access from a Java middle tier.
ODBC, a C-based interface to SQL-based database engines, provides a
consistent interface for communicating with a database and for accessing
database metadata (information about the database system vendor, how the data
is stored, and so on). Individual vendors provide specific drivers or "bridges"
to their particular database management system. Consequently, thanks to ODBC
and SQL, you can connect to a database and manipulate it in a standard way.
It is no surprise that, although ODBC began as a PC standard, it has become
nearly an industry standard.

ODBC
SQL was standardized in 1992 so that a program
could communicate with most database systems without having to change the SQL
commands. Unfortunately, you must connect to a database before sending SQL
commands, and each database vendor has a different interface, as well as
different extensions of SQL. Enter ODBC.
| Java application | bridge (dll's) | RDBMS |
| JDBC | ODBC |   |
The JDBC-ODBC bridge driver is just one of four types of drivers available to support JDBC connectivity. ( also). The JDBC API is included in both J2SE and J2EE releases.
JDBC drivers fit into one of four categories: Driver categories 3 and 4 are the preferred way to access databases using the JDBC API. Driver
categories 1 and 2 are interim solutions where direct pure Java drivers are not yet available. There
are possible variations on categories 1 and 2 (not shown in the following table) that require
middleware, but these are generally less desirable solutions. Categories 3 and 4 offer all the
advantages of Java technology, including automatic installation (for example, downloading the
JDBC driver with an applet that uses it).
Table 1.1 shows the four categories and their properties. The table uses the following definitions for types of network connections:
Most major vendors are currently developing native JDBC drivers to remove the
extra layer between JDBC and the DB
One way the JDBC API deals with this problem is to allow any query string to
be passed through to an underlying DBMS driver. This means that an application
is free to use as much SQL functionality as desired, but it runs the risk of receiving an error on some DBMSs. In fact, an application query need not even be SQL,
or it may be a specialized derivative of SQL designed for specific DBMSs (for
document or image queries, for example).
A second way JDBC deals with problems of SQL conformance is to provide
ODBC-style escape clauses, which are discussed in the Guide section "SQL Escape
Syntax in Statement Objects."
The escape syntax provides a standard JDBC syntax for several of the more
common areas of SQL divergence. For example, there are escapes for date literals
and for stored procedure calls.
For complex applications, JDBC deals with SQL conformance in a third way.
It provides descriptive information about the DBMS by means of the
Because the JDBC API will be used as a base API for developing higher-level
database access tools and APIs, it also has to address the problem of conformance
for anything built on it. The designation "JDBC COMPLIANTTM" was created to
set a standard level of JDBC functionality on which users can rely. In order to use
this designation, a driver must support at least ANSI SQL-2 Entry Level. (ANSI
SQL-2 refers to the standards adopted by the American National Standards Institute in 1992. Entry Level refers to a specific list of SQL capabilities.) Driver
developers can ascertain that their drivers meet these standards by using the test
suite available with the JDBC API.
The "JDBC COMPLIANTTM" designation indicates that a vendor's JDBC
implementation has passed the conformance tests provided by JavaSoft. These
conformance tests check for the existence of all of the classes and methods
defined in the JDBC API, and check as much as possible that the SQL Entry Level
functionality is available. Such tests are not exhaustive, of course, and JavaSoft is
not currently branding vendor implementations, but this compliance definition
provides some degree of confidence in a JDBC implementation. With wider and
wider acceptance of the JDBC API by database vendors, connectivity vendors,
Internet service vendors, and application writers, JDBC is quickly becoming the
standard for Java database access.
Types of JDBC drivers
SQL Conformance
Structured Query Language (SQL) is the standard language for accessing relational
databases. One area of difficulty is that although most DBMSs (DataBase Management Systems) use a standard form of SQL for basic functionality, they do not conform to the more recently-defined standard SQL syntax or semantics for more
advanced functionality. For example, not all databases support stored procedures or
outer joins, and those that do are not consistent with each other. It is hoped that the
portion of SQL that is truly standard will expand to include more and more functionality. In the meantime, however, the JDBC API must support SQL as it is.
DatabaseMetaData interface so that applications can adapt to the requirements and
capabilities of each DBMS.
JavaSoft Framework
JavaSoft provides three JDBC product components as part of the Java Development
Kit (JDK):
The JDBC driver manager is the backbone of the JDBC architecture. It actually is quite small and simple; its primary function is to connect Java applications to the correct JDBC driver and then get out of the way.
The JDBC driver test suite provides some confidence that JDBC drivers will run your program. Only drivers that pass the JDBC driver test suite can be designated JDBC COMPLIANTTM.
The JDBC-ODBC bridge allows ODBC drivers to be used as JDBC drivers.
It was implemented as a way to get JDBC off the ground quickly, and long term
will provide a way to access some of the less popular DBMSs if JDBC drivers are
not implemented for them.
Getting Started: local copy and Java Developer copy from the Short Course. I will show this example
On Windows, in the control panel is 32bitODBC. You need to Add your
dataSource. You will first see a list of drivers, click on the one that
contains your new database. If you do not want a user name or password, use
Advanced and leave these dialog boxes empty. The above link describes
nicely how to do this for various platforms and databases.
So, what is JDBC?
Basic JDBC Programming Concepts
(see "Java Database Programming with JDBC", Patel and Moss, pages 6-9,
32-41)
Next, the following
Database URL, Making the connection, Creating Statements, Executing Queries,
ResultSet
Example: a small example to look
at and work with. It will be used in the next notes
PS. See also the JDO
Creating a Database and Connecting:
An exercise to help you set up a system (for the tutorial exercises...
but useful to see). There are basically two steps: The first is
to create an ODBC-accessible datasource to use, and the second is register it with your system.
If you use ODBC, then you will need to register your data source:
Found it: For Windows 2000, the 32bit ODBC Data Source Adminstrator executable that use to be in the Control Panel is now in the subdirectory Administrative tools under the Control Panel and is now called Data Sources (ODBC)