適合 性
導入バージョン: 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の場合、DescriptionLengthPtr はDriverDescriptionが指すバッファ内で返せる文字数(文字データのnull終端文字を除く)を返します。
バッファ長1
[入力]*DriverDescription バッファの長さ(文字数)。
説明LengthPtr
[出力]*DriverDescriptionで返せる文字数(null終端文字を除く)を返すバッファへのポインタ。 返せる文字数が BufferLength1以上の場合、*DriverDescription のドライバ記述はnull終端文字の長さを引いた BufferLength1 に切り詰められます。
ドライバー属性
[出力]ドライバー属性値ペアのリストを返すためのバッファへのポインタ(「コメント」参照)。
DriverAttributesがNULLの場合、AttributesLengthPtr はDriverAttributesが指すバッファ内で返せる合計バイト数(文字データの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、HandleをenvironmentHandleで呼び出すことで関連する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) SQLExecute、 SQLExecDirect、または 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 関数 |