JAVA Database Connectivity (JDBC) JDBC lets Java programmers connect to a database, query it or update it using SQL. Java and JDBC have an essential advantage over other database programming environments since the programs developed with this technology are platform-independent and vendorindependent. Because of its universality Java and JDBC could eventually replace proprietary database languages. The Design of JDBC JavaSoft's JDBC consists of two layers: the JDBC API and the JDBC Driver Manager API. The JDBC API is the top layer and is the programming interface in Java to structured query language (SQL) which is the standard for accessing relational databases. The JDBC API communicates with the JDBC Driver Manager API, sending it various SQL statements. The manager communicates (transparent to the programmer) with the various third party drivers (provided by Database vendors like Oracle) that actually connect to the database and return the information from the query. Java Application JDBC Driver Manager JDBC/ ODBC Bridge Vendorsupplied JDBC driver ODBC driver Database Database JDBC to Database communication path Notes: Some database vendors already have JDBC drivers (e.g. Oracle). For those databases that do not have a JDBC driver, you need to install the database's ODBC driver (available for most databases) and the JDBC to ODBC bridge supplied by JavaSoft. The JDBC to ODBC bridge has the advantage of letting people use JDBC immediately. It has the disadvantage of requiring yet another layer between the database and the JDBC, although in most cases the performance is acceptable. Basic JDBC Programming Concepts Example shown below opens a database connection, executes a query, and iterates through the results. import java.net.*; import java.sql.*; //needed for JDBC import java.io.*; class MakeDB { public static void main (String args[]) { try { //load the driver needed by the application Class.forName("specialdb.Driver"); //Construct the database address String dbaseURL = "jdbc:mysubprotocol://dbasehost/dbasename"; //Make the database connection Connection dbConnection = DriverManager.getConnection(dbaseURL, "dbaseuser", "dbasepasswd"); //Create a statement and execute the SQL query Statement query = dbConnection.getStatement(); ResultSet results = query.executeQuery("SELECT first_name, last_name from user_table); //Iterate through the results and print them to standard output while(results.next()) { String fname = results.getString("first_name); String lname = results.getString("last_name"); System.out.println("Found user " + fname + " " + lname); } catch (SQLException e) { System.out.println("SQLException: " + e.); } catch(ClassNotFoundException e) { System.out.println("ClassNotFoundException: " + e); } } }