DBPARTNER ODBC 3.0 DriverはODBC 3.0のCore,及びLevel1,Level2の一部をサポートしたドライバです。ODBC 3.0はDAOやRDOを介して,従来に比べて高速なデータベースアクセスを実現します。OLE機能を持つデータベースの標準インタフェースであるADOやRDOにも対応しています。また,ODBC 3.0はODBC 2.xの機能を含んでいるため,ODBC 2.xアプリケーションからでも利用できます。
ODBC 3.0で導入された新機能を,現状では未サポートの機能を含め説明します。
(1) X/OpenとISOのCLIへの対応
ODBC 3.0は,X/OpenとISOのCLI(呼び出しレベルインタフェース)標準に従い,各標準をサポートしています。この二つの標準に対応した機能が幾つか追加されています。
(a) ディスクリプタ
ディスクリプタは,結果セットの列や,SQLステートメントの動的パラメタに関する情報を保存するデータ構造体です。ディスクリプタを使って,統一された方法で列やパラメタのデータに直接アクセスできるため,アプリケーションの様々な動作を効率化できます。ODBC 3.0で導入で拡張された機能の幾つかは,ディスクリプタによって実現されています。
(b) 診断
ODBC 3.0 では,関数を呼び出して取得した情報を診断領域に保存します。環境ハンドル,接続ハンドル,ステートメントハンドル,ディスクリプタハンドルのそれぞれに診断領域が確保されています。診断領域のヘッダフィールドには,関数の実行に関する一般的な情報が保存されます。診断領域のレコードフィールドには,ハンドルと関連付けられたODBC関数が返した最新のエラー又は警告に関する情報が保存されます。ODBC 3.0では,診断情報は次のように拡張されています。
(c) カタログ関数の列名
カタログ関数が返す結果セットの列名は,X/OpenとISOのCLI標準が定める列名に従っています。
(d) 新しい属性と関数
ODBC 3.0では,ODBC 2.xで使用していた「オプション」(接続オプション,ステートメントオプション)を「属性」(接続属性,ステートメント属性)と言い換えています。また,属性を取得,設定する関数も変更されています。
(2) ODBC 2.x拡張機能
ODBC 2.xには,現行のX/OpenやISOのCLIの仕様にはない拡張機能(ディスクリプタと診断)が含まれていました。ODBC 3.0では,この拡張機能に対して新しくディスクリプタフィールドと診断フィールドが導入されました。ODBC 2.xの接続オプションとステートメントオプションは,ODBC 3.0では接続属性とステートメント属性になります。これは,用語がオプションから属性に変更されただけで,属性の役割はオプションと同じです。標準にはないODBC 2.xの機能のうち,ODBC 3.0のディスクリプタモデルに組み込まれたものを次に示します。
(3) ODBC 3.0 APIの拡張
ODBC 3.0では,標準に対応すると同時に,多くの新機能が追加され,API仕様も拡張されています。表 1-1にODBC 3.0 APIでの拡張機能とDBPARTNER ODBC 3.0 Driverのサポート状況を示します。表 1-1には,DBPARTNER ODBC 3.0 Driverでは未サポートの機能も含んでいます。
表1-1 ODBC 3.0 API での拡張機能とDBPARTNER ODBC 3.0 Driverでのサポート状況
追加された機能 | 概要 | DBPARTNER ODBC 3.0 Driverでのサポート |
---|---|---|
新しいデータ型 |
| ○ |
バッチの実行 | アプリケーションは,バッチを実行するためにドライバからバッチの動作に関する詳細情報を取得できます。これによって,アプリケーションはバッチ処理を有効に活用し,パフォーマンスを活用できます。 | × |
名前付きパラメタ | データソースの多くは,ストアドプロシジャの呼び出しでの名前による動的パラメタの指定をサポートしています。ODBC 3.0では,名前付きパラメタのサポートを提供します。 | × |
複数行のフェッチで発生したエラーの通知機能の拡張 |
| ○ |
パラメタ配列で発生したエラーの通知機能の拡張 |
| ○ |
SQLSetPosのSQL_ADDオプションの廃棄 | SQLSetPosのSQL_ADDオプションが使用できなくなり,新しい関数であるSQLBulkOperationsに追加されました。これによって,SQLSetPosの用途が簡潔になり,SQL_ADDオプションのために発生した特殊なケースがなくなりました。 | × |
行の無視 |
| × |
| ○ | |
ブックマークの拡張 |
| × |
バインドの拡張 |
| ○※ |
SQLGetInfoの拡張 |
| ○ |
合致レベル | 新しい合致レベルはインタフェース要素のサポートに基づいています。ODBC 2.xの合致レベルは関数のサポートに基づいています。 | - |
SQL-92への対応 | ODBC 2.xでは,X/OpenのSQL仕様に基づいたSQL文法を提供しました。ODBC 3.0では,この文法が破棄され,SQL文法に関する記述はSQL-92に基づいています。同様にODBC SQLの合致レベルは使用できなくなり,現在,ドライバとデータソースについては,SQL-92に従う情報に置き換えられています。 | - |
データ型の情報 | ODBC 2.xの関数SQLColAttributesに代わるSQLColAttributeは,データ型の情報をこれまでより多く取得できます。 | ○ |
接続プール | 接続プールとは,アプリケーションが使うたびに再構築の必要がない接続をプールし,再接続の際に使用できる機能です。プールされた接続を使用すれば,接続時のオーバーヘッドを減らせます。これは,ネットワークを介して接続する中間層アプリケーションで有効となります。 | ○ |