適合 性
導入されたバージョン: ODBC 1.0 標準コンプライアンス: ISO 92
Summary
SQLDataSources はデータソースに関する情報を返します。 この機能はドライバーマネージャーのみによって実装されます。
構文
SQLRETURN SQLDataSources(
SQLHENV EnvironmentHandle,
SQLUSMALLINT Direction,
SQLCHAR * ServerName,
SQLSMALLINT BufferLength1,
SQLSMALLINT * NameLength1Ptr,
SQLCHAR * Description,
SQLSMALLINT BufferLength2,
SQLSMALLINT * NameLength2Ptr);
引数
EnvironmentHandle
[入力]環境の取り扱い。
方向
[入力]ドライバーマネージャーがどのデータソースについて情報を返すかを決定します。 次のことができます。
SQL_FETCH_NEXT(リスト内の次のデータソース名を取得する)、SQL_FETCH_FIRST(リストの冒頭から取得)、SQL_FETCH_FIRST_USER(最初のユーザーDSNを取得する)、SQL_FETCH_FIRST_SYSTEM(最初のシステムDSNを取得する)。
DirectionがSQL_FETCH_FIRSTに設定されている場合、DirectionをSQL_FETCH_NEXTに設定したSQLDataSourcesへのその後の呼び出しはユーザーおよびシステムDSNの両方を返します。 DirectionがSQL_FETCH_FIRST_USERに設定されている場合、DirectionをSQL_FETCH_NEXTに設定したSQLDataSourcesへのすべての呼び出しはユーザーのDSNのみを返します。 DirectionがSQL_FETCH_FIRST_SYSTEMに設定されている場合、DirectionをSQL_FETCH_NEXTに設定したSQLDataSourcesへのその後のすべての呼び出しはシステムのDSNのみを返します。
ServerName
[出力]データソース名を返すためのバッファへのポインタ。
ServerNameがNULLの場合、NameLength1Ptr はServerNameが指すバッファ内で返せる文字数(文字データのnull終端文字を除く)を返します。
バッファ長1
[入力]*ServerName バッファの長さ(文字数);これはnull-terminationキャラクターを加えた長さSQL_MAX_DSN_LENGTHより長くなくても十分です。
名前長1Ptr
[出力]*ServerNameで返せる文字数(null終端文字を除く)を返すためのバッファへのポインタ。 返す文字数が BufferLength1以上の場合、*ServerName のデータソース名は BufferLength1 からnull終端文字の長さを引いたものに短縮されます。
Description
[出力]データソースに関連付けられたドライバーの記述を返すためのバッファへのポインタ。 例えば、dBASEやSQL Serverなどです。
DescriptionがNULLの場合、NameLength2Ptr は記述が指すバッファ内で返せる文字数(文字データのnull終端文字を除く)を返します。
バッファレングス2
[入力]*Description バッファの文字数の長さ。
NameLength2Ptr
[出力]*Descriptionで返せる文字数(null終端文字を除く)を返すためのバッファへのポインタ。 返す文字数が BufferLength2以上の場合、*Description のドライバ記述は BufferLength2 からnull終端文字の長さを引いたものに切り詰められます。
返品
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NO_DATA、SQL_ERROR、SQL_INVALID_HANDLE。
Diagnostics
SQLDataSourcesがSQL_ERRORまたはSQL_SUCCESS_WITH_INFOを返す場合、SQLGetDiagRecを呼び出してHandleType(SQL_HANDLE_ENV)とHandle(EnvironmentHandle)を割り当てて対応するSQLSTATE値を取得できます。 以下の表は 、通常SQLDataSources によって返されるSQLSTATE値を示し、それぞれをこの関数の文脈で説明しています。「(DM)」という表記は、ドライバーマネージャーが返すSQLstateの記述の前に記載されます。 特に明記されていない限り、各 SQLSTATE 値に関連付けられている戻りコードはSQL_ERROR。
| SQLSTATE | エラー | Description |
|---|---|---|
| 01000 | 一般的な警告 | (DM)ドライバーマネージャー専用情報メッセージです。 (関数はSQL_SUCCESS_WITH_INFOを返します。 |
| 01004 | 文字列データ、右切り捨て | (DM) バッファ *ServerName は完全なデータソース名を返すには十分大きさがなかった。 そのため、名称は短縮されました。 データソース名全体の長さは*NameLength1Ptrで返されます。 (関数はSQL_SUCCESS_WITH_INFOを返します。 (DM) バッファ *記述 がドライバーの完全な記述を返すには十分でなかった。 そのため、説明は短縮された。 切り詰められていないデータソースの記述の長さは*NameLength2Ptrで返されます。 (関数はSQL_SUCCESS_WITH_INFOを返します。 |
| HY000 | 一般的なエラー | (DM) 特定のSQLSTATEが存在せず、実装固有のSQLSTATEも定義されていないエラーが発生しました。 *MessageText バッファー内の SQLGetDiagRec によって返されるエラー メッセージには、エラーとその原因が記述されています。 |
| HY001 | メモリ割り当てエラー | (DM) ドライバーマネージャーは、関数の実行や完了をサポートするために必要なメモリを割り当てることができませんでした。 |
| HY010 | 関数シーケンス エラー | (DM) SQLExecute、 SQLExecDirect、または SQLMoreResultsStatementHandle が呼び出され、SQL_PARAM_DATA_AVAILABLEが返されました。 この関数は、すべてのストリーミング パラメーターのデータが取得される前に呼び出されました。 |
| HY013 | メモリ管理エラー | メモリが不足している可能性があるため、基になるメモリ オブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。 |
| HY090 | 文字列またはバッファーの長さが無効です | (DM) 引数 BufferLength1 に指定された値が0未満でした。 (DM) BufferLength2 引数に指定された値が0未満でした。 |
| HY103 | 無効な取得コード | (DM) Direction という引数に指定された値は、SQL_FETCH_FIRST、SQL_FETCH_FIRST_USER、SQL_FETCH_FIRST_SYSTEM、またはSQL_FETCH_NEXTと等しくなかった。 |
| HY117 | 不明なトランザクション状態のため、接続が中断されます。 切断関数と読み取り専用関数のみが許可されます。 | (DM) 中断状態の詳細については、「 SQLEndTran 関数を参照してください。 |
Comments
SQLDataSourcesはドライバーマネージャーで実装されているため、特定のドライバーの標準に準拠しているかどうかに関わらず、すべてのドライバーでサポートされています。
アプリケーションは SQLDataSources を複数回呼び出して、すべてのデータソース名を取得することができます。 ドライバーマネージャーはこの情報をシステム情報から取得します。 データソース名がなくなった場合、ドライバーマネージャーがSQL_NO_DATAを返します。 SQLDataSourcesがSQL_NO_DATAを返した直後にSQL_FETCH_NEXTで呼び出すと、最初のデータソース名を返します。 アプリケーションが SQLDataSourcesから返される情報をどのように利用するかについては、「 データソースまたはドライバーの選択」を参照してください。
SQL_FETCH_NEXTが最初に SQLDataSources に渡された場合、最初のデータソース名が返されます。
ドライバーはデータソース名を実際のデータソースにマッピングする方法を決定します。
関連関数
| ~についての情報 | 参照先 |
|---|---|
| データソースに接続するために必要な値を発見し一覧化 | SQLBrowseConnect 関数 |
| データ ソースへの接続 | SQLConnect 関数 |
| 接続文字列またはダイアログ ボックスを使用してデータ ソースに接続する | SQLDriverConnect 関数 |
| ドライバーの説明と属性を返す | SQLDrivers 関数 |