last modified: Mar/16th/2002
JDBC は Java によるデータ・ベース (DB -DataBase) へのアクセスの仕組みです。アプリケーション、 Servlet, Applet ともに使えます。
Network アプリケーションでは、ローカルなマシンのアプリケーションから、 DB サーバマシンの DB へ接続して操作するモデルを二層モデル、 ローカルなマシンのアプレットからウェブサーバ上のアプリケーション/サーブレットを使って、別の DB サーバの DB を操作するモデルを三層モデルと呼び、DB サーバなどの Web サーバの後ろにあるシステムをバックエンドと呼びます。
もともとデータベースという言葉は、アメリカ国防総省で使われました。分散していたデータを一元管理するための仮想的なベース(基地)と言う意味です。その後、業務システムにおいて、取り扱いデータが膨大かつ多様になるに従い、データ中心指向が発展し、現在ではデータベース抜きのシステムは考えられなくなりました。
データベースの最近の主流は RDB -Relational DataBase (関係データベース)と呼ばれるもので、 SQL -Structured Query Language という簡単な言語を用いて操作します。レガシーなホスト系(大型汎用機)では、階層型データベースも使われていますが、インターネット普及によるオープン化、分散化の流れの中では消え行くテクノロジーです。
RDB では、ディスク上に存在するデータの実態に対して、「表」や「視点」と呼ばれるものを通してアクセスします。
このデータベースにアクセスする言語が SQL と呼ばれるもので、 SQL によってデータベースを操作するためのソフトウェアは、RDBMS -Relational DataBase Management System と呼ばれるミドルウェアになります。アプリケーション・ソフトウェアからはサブシステムと呼ばれることもあります。RDBMS は Oracle, IBM DB2 UDB, Sybase, MS Access なとが有名です。
Network Centric から、 Contets Centric へ移行しつつある現状では、データベースの役割は中心的なものになりつつあり、 Web アプリケーションで HTTP サーバのバックエンドの DB は不可欠です。そして、ネットワーク上での利用を想定して開発されている Java によってデータベースにアクセスするための API である JDBC は、 Java の主要な機能の一つと言えます。
JDBC は Java プログラムから DBMS に SQL 文を発行して、データベースを操作するための仕組みです。つまり Java からデータベースにアクセスするときに使う API -Applidcation Program Interface です。 JDBCTM は "Java DataBase Connectivity" の頭文字をとって名づけられたそうです。
Java の開発をしている SunMicrosystems によって開発され、J2SE に全てのJDBC APIが含まれています。J2SE 1.4 に含まれるのは JDBC 3.0 API であり、 J2SE 1.3/1.2 には JDBCTM 2.0 API が含まれています。
JDBC API は次の2つのパッケージ、 java.sql と javax.sql から成ります。
また、Java がデータベースを操作するためのドライバが必要です。これらはミドルウェアのベンダー(メーカ)が提供しており、ほとんどの DBMS に含まれていますので、 DB が使える環境であれば、 JDBC も使えると思って間違いないでしょう。
SQL 文を発行するための Java API である JDBC を使ったプログラムは次のような階層になっています。
JDBC API を利用する DB へのアクセスは次のような手順を踏みます。
Class.forName("jdbc.odbc.JdbcOdbcDriver");または
DriverManager.registerDriver(new DB2Driver());
String url = "jdbc:subprotocol:subname";
Connection con = DriverManager.getConnection(url, "userID", "passwd");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM CUSTOMER"); while (rs.next()) { String str1 = rs.getString("NAME"); int str2 = rs.getInt("CUST_ID"); }
stmt.close(); con.close();
JDBC API によって、 DB にアクセスするためには、以上の手順が必要です。
JDBC を利用するには次の前提が必要です。
import java.sql.*;
import vender.package;
try { // Connection // Statement // close } catch (SQLException ex) { while (ex != null) { System.out.println ("SQLState: " + ex.getSQLState ()); System.out.println ("Message: " + ex.getMessage ()); System.out.println ("Vendor: " + ex.getErrorCode ()); } }