SQLDataSources 関数

適合 性
導入されたバージョン: 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の場合、NameLength1PtrServerNameが指すバッファ内で返せる文字数(文字データの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) SQLExecuteSQLExecDirect、または 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 関数