データベース(以下、DB)に接続する際、JDBCまたはODBCという単語が登場します。
BIツール(Power BI/Tableau/MotionBorad/Qlik Sense/…)やETLツール(DataSpider/ASTERIA/Talend/…)を使うときの接続手段として利用します。
細かいことは分からずに使っている方も多いと思いますが、役割や仕組みを知っているとツールがうまく動かいないときなどに対応可能です。
JDBCとODBCの基本的な仕組み
JDBCとODBCの概略図は以下になります。
アプリを使用して、DBに接続する場合、DBの種類によって適したODBCドライバやJDBCドライバが必要になります。
ツールによっては、JDBCかODBCのどちらか一方のサポートのみの場合があります。
メジャーなDBは、JDBCとODBCの両方サポートしているので問題になることはありませんが、マイナーなDBを使う場合は注意が必要です。
また、ドライバにバグがあり、動作がおかしいケースもあるので、最新バージョンをインストールしましょう。
JDBCとは
Java Database Conectivityの略称で、JavaアプリケーションからDBを操作するAPIのことです。
JDK(Java Development Kit)のAPIとして、java.sqlに実装されています。
JavaでDBへアクセスするプログラムを作成する際に利用します。
以下、JDBCを使ったJavaプログラム。
String url="jdbc:xxx:xxxx;"; // ここの書き方はDBごとに異なる
String strSelect="SELECT a, b, c FROM Table01";
// データベースとの接続
connection=DriverManager.getConnection(url,id,pw);
statement=connection.createStatement();
ResultSet rs=null;
rs=statement.executeQuery(strSelect); // SQL実行
while(rs.next()){
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
rs.close();
DBにJDBCインタフェースでアクセスできるようにするソフトウェアをJDBCドライバと呼びます。
実体は、Jarファイルです。
ODBCとは
ODBC(Open Database Connectivity)は、Microsoft社が提唱したWindows対応のアプリケーションからDBにアクセスするためのインタフェースです。
マイクロソフトが1992年に発表したAPIの仕様で、C言語上のAPIレベルで統一したインターフェイスとしてデータベースに接続するためのAPIとして使われてきました。
1990年代に盛んにAPI仕様の拡張が行われていました。
今でもWindows OSから各種DBに接続するために利用されます。
C言語で、ODBCのAPIを使ってプログラムを作成することも可能ですが、APIの仕様も分かりづらく、20年以上の前の時代遅れものなので新規にプログラムを作成する開発者はいません。
(ODBCのAPIの使い方を覚える必要もありません)
なぜ、今も利用されているかというと、Windows OS上で使うツールの接続のために生き残っています。
特にBIツールでの接続方法は、JDBCかODBCです。
BIツールは古くから存在し、DBへのアクセスの処理をODBCで行っているケースが多くあります。
そういった背景もあり、しぶとく残っています。
<参考 SQLServerのODBC APIリファレンス はここをクリック>
DBにODBCインタフェースでアクセスできるようにするソフトウェアをODBCドライバと呼びます。
実体はWindows の DLLファイルです。
JDBC-ODBC ブリッジとは
JDBC-ODBCブリッジは、ODBCドライバしかないDBにJavaから接続する場合の手段です。
JDBC-ODBCブリッジのドライバは、JDBCの操作を ODBCに変換して実行します。
JDBCドライバが存在する場合は、不要な技術です。
まとめ
JDBCとODBCの仕組みや役割について紹介しました。
今後、JDBCやODBCを利用するツールや便利な使い方を紹介する予定です。