ウェブシステムやクライアントサーバーシステム上でプログラミング言語からRDBサーバに接続するためにプログラミング言語とRDBをサポートしたデータベース接続インタフェースが必要となります。
この内、RDBごと、または汎用のSQLをサポートしているデータベース接続インタフェースには下記のようなものがあります。
インタフェース | 言語 | DB/RDB | 備考 |
---|---|---|---|
Pro*C | C | Oracle | 開発元:Oracle |
ESQL/C | C | SQL Server | Pro*Cと酷似 |
SQLJ | Java | Oracle | 開発元:Sun Microsystems |
oo4o | VB/VC#/VC++ | Oracle | 開発元:Oracle |
DAO | VBA/VB/VC++ | 汎用 | 開発元:Microsoft |
ADO/ADO.NET | VBA/VB/VC#/VC++ | 汎用 | 開発元:Microsoft |
ODBC | VC#/VC++ | 汎用 | 開発元:Microsoft 技術公開により標準化 |
JDBC | Java | 汎用 | ODBCの派生 ODBC経由での接続も可 開発元:Sun Microsystems |
OLE DB | 汎用 | 汎用 | 開発元:Microsoft COM/Component Object Modelにより実装されたAPI RDB以外の表計算やテキストなど多くに対応 |
更にデータベース接続は、その方法から主に動的SQLタイプと埋め込みSQLタイプの2つのタイプがあります。
タイプ | インタフェース |
---|---|
動的SQL | DAO ADO ODBC JDBC oo4o OLE DB 他 |
埋め込みSQL | Pro*C ESQL/C SQLJ 他 |
その他SQL | PL/SQL(Oracle) Transact-SQL(Microsoft) 他 |
動的SQLとは、プログラミング言語において他のプログラム同様に一連のソース内にプログラミング言語の構文を使ってSQL文を一緒に記述できるようにするタイプです。
埋め込みSQLとは、プログラミング言語のソースファイルとは別に埋め込みSQLの構文に沿って個別にファイルを作成し、それぞれ専用のコマンド(プリコンパイラ)によって事前にコンパイル(プリコンパイル)することで使用するプログラミング言語に応じたソースファイルに変換した後、各プログラミング言語用のコンパイラでコンパイルすることにより一連のソースに埋め込むタイプを指します。
一見すると「埋め込み」というフレーズが紛らわしく感じるかもしれませんが、「別個のものを後から埋め込む」という意味合いです。
ここで「その他SQL」としたものは、動的SQLと埋め込みSQLの双方の機能を取り込んだようなタイプを想定していますが、それらのタイプには賛否両論あるようです。
ローカル環境のMS社製AceessにはJet Database Engineがあり、DAOはローカルアクセスにおいてはJetを経由しています。
ちなみにCORBA『Common Object Request Broker Architecture』(通称コルバ)のようにC/S上でクライアントとサーバ間でORB/Object Request Brokerを介して複数のクライアントからのリクエスト(要求)をコントロールした上でRDB接続を行う事ができるものがあります。
CORBAを利用する場合には、IDLという言語でインタフェースを定義、専用のコンパイラでコンパイルし、ラッパとなるドライバとスタブを生成します。
但し、CORBAはSQLをサポートしているわけではないのでORBを利用できる環境で前述の各種データベース接続と併用する必要があります。