SQLDrivers 関数

適合 性
導入バージョン: ODBC 2.0 Standards Compliance: ODBC

Summary
SQLDrivers はドライバーの記述とドライバー属性キーワードを一覧にします。 この機能はドライバーマネージャーのみによって実装されます。

構文

  
SQLRETURN SQLDrivers(  
     SQLHENV         EnvironmentHandle,  
     SQLUSMALLINT    Direction,  
     SQLCHAR *       DriverDescription,  
     SQLSMALLINT     BufferLength1,  
     SQLSMALLINT *   DescriptionLengthPtr,  
     SQLCHAR *       DriverAttributes,  
     SQLSMALLINT     BufferLength2,  
     SQLSMALLINT *   AttributesLengthPtr);  

引数

EnvironmentHandle
[入力]環境の取り扱い。

方向
[入力]ドライバーマネージャーがリスト内の次のドライバー記述を取得するか(SQL_FETCH_NEXT)、それとも検索をリストの冒頭から始めるか(SQL_FETCH_FIRST)を決定します。

DriverDescription
[出力]ドライバーの記述を返すためのバッファへのポインタ。

DriverDescriptionがNULLの場合、DescriptionLengthPtrDriverDescriptionが指すバッファ内で返せる文字数(文字データのnull終端文字を除く)を返します。

バッファ長1
[入力]*DriverDescription バッファの長さ(文字数)。

説明LengthPtr
[出力]*DriverDescriptionで返せる文字数(null終端文字を除く)を返すバッファへのポインタ。 返せる文字数が BufferLength1以上の場合、*DriverDescription のドライバ記述はnull終端文字の長さを引いた BufferLength1 に切り詰められます。

ドライバー属性
[出力]ドライバー属性値ペアのリストを返すためのバッファへのポインタ(「コメント」参照)。

DriverAttributesがNULLの場合、AttributesLengthPtrDriverAttributesが指すバッファ内で返せる合計バイト数(文字データのnull終端文字を除く)を返します。

バッファレングス2
[入力]*DriverAttributes バッファの長さ(文字数)です。 * DriverDescription 値が Unicode 文字列(SQLDriversW 呼び出し時)の場合、 BufferLength 引数は偶数でなければなりません。

属性長Ptr
[出力]*DriverAttributesで返せる合計バイト数(null終端バイトを除く)を返すためのバッファへのポインタ。 返すバイト数が BufferLength2以上の場合、*DriverAttributes の属性値ペアのリストは BufferLength2 からnull終端文字の長さを引いたものに切り詰められます。

返品

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NO_DATA、SQL_ERROR、SQL_INVALID_HANDLE。

Diagnostics

SQLDriversがSQL_ERRORまたはSQL_SUCCESS_WITH_INFOを返す場合、SQLGetDiagRecを呼び出し、HandleTypeをSQL_HANDLE_ENV、HandleenvironmentHandleで呼び出すことで関連するSQLSTATE値を取得できます。 以下の表は 、SQLDrivers が通常返すSQLSTATE値を一覧にし、それぞれをこの関数の文脈で説明しています。「(DM)」という表記は、ドライバーマネージャーが返すSQLstateの記述の前に記載されます。 特に明記されていない限り、各 SQLSTATE 値に関連付けられている戻りコードはSQL_ERROR。

SQLSTATE エラー Description
01000 一般的な警告 (DM)ドライバーマネージャー専用情報メッセージです。 (関数はSQL_SUCCESS_WITH_INFOを返します。
01004 文字列データ、右切り捨て (DM) バッファ*DriverDescription は完全なドライバー記述を返すには十分大きさがなかった。 そのため、説明は短縮された。 ドライバーの完全な記述の長さは*DescriptionLengthPtr.に返されています。 (関数はSQL_SUCCESS_WITH_INFOを返します。

(DM) バッファの*DriverAttributes は、属性値ペアの完全なリストを返すには十分大きすぎませんでした。 そのため、リストは短縮されました。 属性値ペアの切り詰めなしリストの長さは*AttributesLengthPtrで返されます。 (関数はSQL_SUCCESS_WITH_INFOを返します。
HY000 一般的なエラー 特定の SQLSTATE がなく、実装固有の SQLSTATE が定義されていないエラーが発生しました。 *MessageText バッファー内の SQLGetDiagRec によって返されるエラー メッセージには、エラーとその原因が記述されています。
HY001 メモリ割り当てエラー (DM) ドライバーマネージャーは、関数の実行や完了をサポートするために必要なメモリを割り当てることができませんでした。
HY010 関数シーケンス エラー (DM) SQLExecuteSQLExecDirect、または SQLMoreResultsStatementHandle が呼び出され、SQL_PARAM_DATA_AVAILABLEが返されました。 この関数は、すべてのストリーミング パラメーターのデータが取得される前に呼び出されました。
HY013 メモリ管理エラー メモリが不足している可能性があるため、基になるメモリ オブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。
HY090 文字列またはバッファーの長さが無効です (DM) 引数 BufferLength1 に指定された値が0未満でした。

(DM) BufferLength2 引数に指定された値が 0 未満または 1 に等しかった。
HY103 無効な取得コード (DM) Direction の引数に指定された値は SQL_FETCH_FIRST や SQL_FETCH_NEXT に等しくなかった。
HY117 不明なトランザクション状態のため、接続が中断されます。 切断関数と読み取り専用関数のみが許可されます。 (DM) 中断状態の詳細については、「 SQLEndTran 関数を参照してください。

Comments

SQLDrivers は*DriverDescription バッファ内のドライバー記述を返します。 これは*DriverAttributes バッファ内のドライバーに関する追加情報をキーワードと値の組み合わせのリストとして返します。 ドライバのシステム情報に記載されているすべてのキーワードは、データソースの作成を促すために使われるCreateDSNを除き、すべてのドライバーで返されます。 CreateDSNは任意です。 各ペアはヌルバイトで終了し、完全なリストはヌルバイトで終了します(つまりリストの終わりに2つのヌルバイトが付けられます)。 例えば、C構文を用いたファイルベースのドライバでは、以下の属性リスト(「\0」はヌル文字を表します):

FileUsage=1\0FileExtns=*.dbf\0\0  

*DriverAttributes がリスト全体を保持するには十分でない場合はリストを切り捨て、 SQLDrivers はSQLSTATE 01004(データ切り捨て)を返し、リストの長さ(最後のnull終端バイトを除く)は*AttributesLengthPtrで返されます。

ドライバー属性キーワードは、ドライバーをインストールする際にシステム情報から追加されます。 詳細は「 ODBCコンポーネントのインストール」をご覧ください。

アプリケーションは SQLDrivers を複数回呼び出してすべてのドライバー記述を取得することができます。 ドライバーマネージャーはこの情報をシステム情報から取得します。 ドライバーの記述がなくなった場合は、 SQLDriversが SQL_NO_DATAを返します。 SQLDriversがSQL_NO_DATAを返した直後にSQL_FETCH_NEXTで呼び出されると、最初のドライバー記述を返します。 アプリケーションが SQLDriversから返される情報をどのように利用するかについては、「 データソースまたはドライバーの選択」を参照してください。

SQL_FETCH_NEXTが最初に呼び出されたときに SQLDrivers に渡されると、 SQLDrivers は最初のデータソース名を返します。

SQLDriversはドライバーマネージャーで実装されているため、特定のドライバーの標準に準拠しているかどうかに関わらず、すべてのドライバーでサポートされています。

~についての情報 参照先
データソースに接続するために必要な値を発見し一覧化 SQLBrowseConnect 関数
データ ソースへの接続 SQLConnect 関数
データソース名の返却 SQLDataSources 関数
接続文字列またはダイアログ ボックスを使用してデータ ソースに接続する SQLDriverConnect 関数