SQLBrowseConnect 関数

準拠
導入されたバージョン: ODBC 1.0 Standards Compliance: ODBC

まとめ
SQLBrowseConnect では、データ ソースへの接続に必要な属性と属性値を検出して列挙する反復メソッドがサポートされています。 SQLBrowseConnect を呼び出すたびに、連続したレベルの属性と属性値が返されます。 すべてのレベルが列挙されると、データ ソースへの接続が完了し、 SQLBrowseConnect によって完全な接続文字列が返されます。 SQL_SUCCESSまたはSQL_SUCCESS_WITH_INFOのリターン コードは、すべての接続情報が指定され、アプリケーションがデータ ソースに接続されたことを示します。

構文

  
SQLRETURN SQLBrowseConnect(  
     SQLHDBC         ConnectionHandle,  
     SQLCHAR *       InConnectionString,  
     SQLSMALLINT     StringLength1,  
     SQLCHAR *       OutConnectionString,  
     SQLSMALLINT     BufferLength,  
     SQLSMALLINT *   StringLength2Ptr);  

引数

ConnectionHandle
[入力] 接続ハンドル。

InConnectionString
[入力]要求接続文字列を参照します (「コメント」の「InConnectionString 引数」を参照)。

StringLength1
[入力]文字単位の *InConnectionString の長さ。

OutConnectionString
[出力]参照結果の接続文字列を返す文字バッファーへのポインター (「コメント」の「OutConnectionString 引数」を参照)。

OutConnectionString が NULL の場合でも、StringLength2Ptr、OutConnectionString が指すバッファーで返すために使用できる文字数 (文字データの null 終端文字を除く) を返します。

BufferLength
[入力]*OutConnectionString バッファーの長さ (文字数)。

StringLength2Ptr
[出力]*OutConnectionString で返すために使用できる文字の合計数 (null 終端を除く)。 返される文字数が BufferLength 以上の場合、*OutConnectionString の接続文字列は BufferLength から null 終端文字の長さを引いた値に切り捨てられます。

戻り値

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NEED_DATA、SQL_ERROR、SQL_INVALID_HANDLE、またはSQL_STILL_EXECUTING。

診断

SQLBrowseConnect がSQL_ERROR、SQL_SUCCESS_WITH_INFO、またはSQL_NEED_DATAを返す場合、関連付けられた SQLSTATE 値を取得するには、HandleType が SQL_HANDLE_STMT で、ConnectionHandle の Handle を使用して SQLGetDiagRec を呼び出します。 次の表に、 SQLBrowseConnect によって一般的に返される SQLSTATE 値の一覧を示し、この関数のコンテキストでそれぞれについて説明します。"(DM)" という表記は、ドライバー マネージャーによって返される SQLSTATEs の説明の前にあります。 特に明記されていない限り、各 SQLSTATE 値に関連付けられた戻りコードはSQL_ERRORされます。

SQLSTATE エラー 説明
01000 一般的な警告 ドライバー固有の情報メッセージ。 (関数はSQL_SUCCESS_WITH_INFOを返します。
01004 文字列データ、右切り捨て バッファー *OutConnectionString は、参照結果の接続文字列全体を返すのに十分な大きさではなかったため、文字列が切り捨てられました。 バッファー *StringLength2Ptr には、参照結果の接続文字列の長さが含まれています。 (関数はSQL_NEED_DATAを返します。
01S00 接続文字列属性が無効です 参照要求接続文字列 (InConnectionString) で無効な属性キーワードが指定されました。 (関数はSQL_NEED_DATAを返します。

現在の接続レベルに適用されない属性キーワードが、参照要求接続文字列 (InConnectionString) で指定されました。 (関数はSQL_NEED_DATAを返します。
01S02 値が変更されました ドライバーは、SQLSetConnectAttrValuePtr 引数の指定された値をサポートしておらず、同様の値を置き換えました。 (関数はSQL_SUCCESS_WITH_INFOを返します。
08001 クライアントが接続を確立できない ドライバーがデータ ソースとの接続を確立できませんでした。
08002 使用中の接続名 (DM) 指定された接続は、データ ソースとの接続を確立するために既に使用されており、接続が開かれていました。
08004 サーバーが接続を拒否しました データ ソースは、実装定義の理由で接続の確立を拒否しました。
08S01 通信リンクエラー ドライバーと、ドライバーが接続を試みたデータ ソースとの間の通信リンクは、関数の処理が完了する前に失敗しました。
28000 承認の指定が無効です 参照要求接続文字列 (InConnectionString) で指定されたユーザー識別子または承認文字列、またはその両方が、データ ソースによって定義された制限に違反しました。
HY000 一般的なエラー 特定の SQLSTATE がなく、実装固有の SQLSTATE が定義されていないエラーが発生しました。 *MessageText バッファー内の SQLGetDiagRec によって返されるエラー メッセージは、エラーとその原因を説明します。
HY001 メモリ割り当てエラー (DM) ドライバー マネージャーは、関数の実行または完了をサポートするために必要なメモリを割り当てることができませんでした。

ドライバーは、関数の実行または完了をサポートするために必要なメモリを割り当てることができませんでした。
HY008 操作が取り消されました SQLCancelHandle 関数を呼び出して非同期操作が取り消されました。 次に、元の関数が ConnectionHandle で再度呼び出されました。

マルチスレッド アプリケーション内の別のスレッドから ConnectionHandleSQLCancelHandle を呼び出して、操作が取り消されました。
HY010 関数シーケンス エラー (DM) 非同期で実行される関数 (この関数ではなく) が ConnectionHandle に対して呼び出され、この関数が呼び出されたときにまだ実行されていました。
HY013 メモリ管理エラー メモリが不足している可能性があるため、基になるメモリ オブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。
HY090 文字列またはバッファーの長さが無効です (DM) 引数 StringLength1 に指定された値が 0 未満で、SQL_NTSと等しくありません。

(DM) 引数 BufferLength に指定された値が 0 未満でした。
HY114 ドライバーは、接続レベルの非同期関数の実行をサポートしていません (DM) アプリケーションは、接続を行う前に、接続ハンドルで非同期操作を有効にしました。 ただし、ドライバーは接続ハンドルでの非同期操作をサポートしていません。
HYT00 タイムアウトに達しました データ ソースへの接続が完了する前に、ログイン タイムアウト期間の有効期限が切れています。 タイムアウト期間は、 SQLSetConnectAttr (SQL_ATTR_LOGIN_TIMEOUT) によって設定されます。
HYT01 接続のタイムアウト データ ソースが要求に応答する前に、接続タイムアウト期間の有効期限が切れています。 接続タイムアウト期間は、 SQLSetConnectAttr (SQL_ATTR_CONNECTION_TIMEOUT) によって設定されます。
IM001 ドライバーは、この関数をサポートしていません (DM) 指定されたデータ ソース名に対応するドライバーは、 関数をサポートしていません。
IM002 データ ソースが見つからず、既定のドライバーが指定されていません (DM) 参照要求接続文字列 (InConnectionString) で指定されたデータ ソース名が、システム情報に見つかりませんでした。また、既定のドライバー仕様も見つかりませんでした。

(DM) ODBC データ ソースと既定のドライバー情報がシステム情報に見つかりませんでした。
IM003 指定されたドライバーを読み込めませんでした (DM) システム情報または DRIVER キーワードで指定されたデータ ソース仕様に記載されている ドライバー が見つからなかったか、他の理由で読み込めませんでした。
IM004 SQL_HANDLE _ENVのドライバーの SQLAllocHandle が失敗しました (DM) SQLBrowseConnect 中に、ドライバー マネージャーは、HandleType が SQL_HANDLE_ENV のドライバーの SQLAllocHandle 関数を呼び出し、ドライバーからエラーが返されました。
IM005 SQL_HANDLE_DBCのドライバーの SQLAllocHandle が失敗しました (DM) SQLBrowseConnect 中に、ドライバー マネージャーはドライバーの SQLAllocHandle 関数を呼び出し、 HandleType が SQL_HANDLE_DBCで、ドライバーからエラーが返されました。
IM006 ドライバーの SQLSetConnectAttr が失敗しました (DM) SQLBrowseConnect 中に、ドライバー マネージャーによってドライバーの SQLSetConnectAttr 関数が呼び出され、ドライバーからエラーが返されました。
IM009 翻訳 DLL を読み込むことができません ドライバーは、データ ソースまたは接続に指定された変換 DLL を読み込めませんでした。
IM010 データ ソース名が長すぎます (DM) DSN キーワードの属性値がSQL_MAX_DSN_LENGTH文字より長かった。
IM011 ドライバー名が長すぎます (DM) DRIVER キーワードの属性値が 255 文字を超えています。
IM012 DRIVER キーワード構文エラー (DM) DRIVER キーワードのキーワードと値のペアに構文エラーが含まれていました。
IM014 指定された DSN に、ドライバーとアプリケーションのアーキテクチャの不一致が含まれています (DM) 32 ビット アプリケーションは、64 ビット ドライバーに接続する DSN を使用します。またはその逆も同様です。
IM017 非同期通知モードでポーリングが無効になっている 通知モデルを使用するたびに、ポーリングは無効になります。
IM018 SQLCompleteAsync は、このハンドルに対する以前の非同期操作を完了するために呼び出されていません。 ハンドルの前の関数呼び出しがSQL_STILL_EXECUTINGを返し、通知モードが有効になっている場合は、後処理を実行して操作を完了するために、ハンドルで SQLCompleteAsync を呼び出す必要があります。
S1118 ドライバーは非同期通知をサポートしていません ドライバーが非同期通知をサポートしていない場合、SQL_ATTR_ASYNC_DBC_EVENTまたはSQL_ATTR_ASYNC_DBC_RETCODE_PTRを設定することはできません。

InConnectionString 引数

参照要求の接続文字列には、次の構文があります。

connection-string ::= attribute[;] | 属性;connection-string;
attribute ::= attribute-keyword=attribute-value | DRIVER=[{]attribute-value[}]
attribute-keyword ::= DSNPWDUID | | | driver-defined-attribute-keyword
attribute-value ::= character-string
driver-defined-attribute-keyword ::= identifier

ここで、文字列に 0 個以上の文字が含まれています。identifier には 1 つ以上の文字があります。attribute-keyword では大文字と小文字は区別されません。属性値では大文字と小文字が区別される場合があります。DSN キーワードの値は、ブランクのみで構成されるわけではありません。 接続文字列と初期化ファイルの文法により、文字 []{}(),;を含むキーワードと属性値?*=!@ は避けてください。 システム情報の文法により、キーワードとデータ ソース名に円記号 (\) 文字を含めることはできません。 ODBC 2 の場合。x ドライバーでは、DRIVER キーワードの属性値を囲む中かっこが必要です。

参照要求接続文字列でキーワードが繰り返される場合、ドライバーはキーワードの最初の出現に関連付けられている値を使用します。 DSN キーワードと DRIVER キーワードが同じ参照要求接続文字列に含まれている場合、ドライバー マネージャーとドライバーは、最初に表示されるキーワードを使用します。

アプリケーションでデータ ソースまたはドライバーを選択する方法については、「データ ソース またはドライバーの選択」を参照してください。

OutConnectionString 引数

参照結果の接続文字列は、接続属性の一覧です。 接続属性は、属性キーワードと対応する属性値で構成されます。 参照結果の接続文字列の構文は次のとおりです。

connection-string ::= attribute[;] | 属性;connection-string
attribute ::= [*]attribute-keyword=attribute-value
attribute-keyword ::= ODBC-attribute-keyword | driver-defined-attribute-keyword
ODBC-attribute-keyword = {UID | PWD}[:localized-identifier] driver-defined-attribute-keyword ::= identifier[:localized-identifier] attribute-value ::= {attribute-value-list} | ? (中かっこはリテラルであり、ドライバーによって返されます)。
attribute-value-list ::= character-string [:localized-character string] | character-string [:localized-character string] ,attribute-value-list

文字列ローカライズされた文字列の文字が 0 個以上の場合。identifierlocalized-identifier には 1 つ以上の文字があります。attribute-keyword では大文字と小文字は区別されません。および 属性値では、大文字と小文字が区別される場合があります。 接続文字列と初期化ファイルの文法、キーワード、ローカライズされた識別子、および文字 []{}(),;を含む属性値のため?*=!@ は避けてください。 システム情報の文法により、キーワードとデータ ソース名に円記号 (\) 文字を含めることはできません。

参照結果の接続文字列の構文は、次のセマンティック規則に従って使用されます。

  • attribute-keyword の前にアスタリスク (*) が付いている場合、属性は省略可能であり、SQLBrowseConnect の次の呼び出しでは省略できます。

  • 属性キーワード UIDPWD は、 SQLDriverConnect で定義されているのと同じ意味を持ちます。

  • driver-defined-attribute-keyword は、属性値を指定できる属性の種類を指定します。 たとえば、 SERVERDATABASEHOSTDBMS などです。

  • ODBC-attribute-keywordsdriver-defined-attribute-keywords には、ローカライズされた、またはユーザーフレンドリなバージョンの キーワードが含まれます。 これは、アプリケーションによってダイアログ ボックスのラベルとして使用される場合があります。 ただし、ドライバーに参照要求文字列を渡すときは、 UIDPWD、または 識別子 のみを使用する必要があります。

  • {attribute-value-list} は、対応する attribute-keyword に対して有効な実際の値の列挙です。 中かっこ ({}) は選択肢の一覧を示すのではなく、ドライバーによって返されることに注意してください。 たとえば、サーバー名の一覧やデータベース名の一覧などです。

  • 属性値が 1 つの疑問符 (?) の場合、1 つの値が attribute-keyword に対応します。 たとえば、UID=JohnS です。PWD=ゴマ。

  • SQLBrowseConnect を呼び出すたびに、接続プロセスの次のレベルを満たすために必要な情報のみが返されます。 ドライバーは、各呼び出しでコンテキストを常に決定できるように、状態情報を接続ハンドルに関連付けます。

SQLBrowseConnect の使用

SQLBrowseConnect には、割り当てられた接続が必要です。 ドライバー マネージャーは、 で指定されたドライバー、または最初の参照要求接続文字列で指定されたデータ ソース名に対応するドライバーを読み込みます。これが発生するタイミングについては、 SQLConnect 関数の「コメント」セクションを参照してください。 ドライバーは、参照プロセス中にデータ ソースとの接続を確立できます。 SQLBrowseConnect がSQL_ERRORを返すと、未処理の接続が終了し、接続が未接続状態に戻ります。

Note

SQLBrowseConnect では、接続プールはサポートされていません。 接続プールが有効になっているときに SQLBrowseConnect が呼び出されると、SQLSTATE HY000 (一般エラー) が返されます。

接続で SQLBrowseConnect が初めて呼び出される場合、参照要求接続文字列には DSN キーワードまたは DRIVER キーワードが含まれている必要があります。 参照要求の接続文字列に DSN キーワードが含まれている場合、ドライバー マネージャーは、システム情報で対応するデータ ソース仕様を検索します。

  • ドライバー マネージャーは、対応するデータ ソースの仕様を見つける場合は、関連付けられているドライバー DLL を読み込みます。ドライバーは、システム情報からデータ ソースに関する情報を取得できます。

  • ドライバー マネージャーは、対応するデータ ソースの仕様を見つけることができない場合は、既定のデータ ソースの仕様を検索し、関連付けられているドライバー DLL を読み込みます。ドライバーは、システム情報から既定のデータ ソースに関する情報を取得できます。 "DEFAULT" は DSN のドライバーに渡されます。

  • ドライバー マネージャーで対応するデータ ソースの仕様が見つからず、既定のデータ ソース仕様がない場合は、SQLSTATE IM002 でSQL_ERRORが返されます (データ ソースが見つからず、既定のドライバーが指定されていません)。

参照要求の接続文字列に DRIVER キーワードが含まれている場合、ドライバー マネージャーは指定されたドライバーを読み込みます。システム情報内のデータ ソースの検索は試行されません。 DRIVER キーワードはシステム情報の情報を使用しないため、ドライバーは、参照要求接続文字列の情報のみを使用してデータ ソースに接続できるように、十分なキーワードを定義する必要があります。

SQLBrowseConnect を呼び出すたびに、アプリケーションは参照要求接続文字列の接続属性値を指定します。 ドライバーは、参照結果の接続文字列内の属性と属性値の連続したレベルを返します。参照要求接続文字列にまだ列挙されていない接続属性がある限り、SQL_NEED_DATAを返します。 アプリケーションは、参照結果の接続文字列の内容を使用して、 次に SQLBrowseConnect を呼び出す参照要求接続文字列を作成します。 すべての必須属性 ( OutConnectionString 引数の前にアスタリスクが付かない属性) は、 SQLBrowseConnect の次の呼び出しに含める必要があります。 アプリケーションは、現在の参照要求接続文字列をビルドするときに、前の参照結果接続文字列の内容を使用できないことに注意してください。つまり、以前のレベルで設定された属性に異なる値を指定することはできません。

すべてのレベルの接続と関連する属性が列挙されると、ドライバーはSQL_SUCCESSを返し、データ ソースへの接続が完了し、完全な接続文字列がアプリケーションに返されます。 接続文字列は、 SQLDriverConnect と組み合わせて、別の接続を確立するためのSQL_DRIVER_NOPROMPT オプションと共に使用するのに適しています。 ただし、完全な接続文字列は 、SQLBrowseConnect の別の呼び出しでは使用できません。 SQLBrowseConnect が再度呼び出された場合は、呼び出しのシーケンス全体を繰り返す必要があります。

また、参照プロセス中に回復可能な致命的でないエラーがある場合、SQLBrowseConnect はSQL_NEED_DATAも返します。たとえば、アプリケーションによって指定された無効なパスワードまたは属性キーワードなどです。 SQL_NEED_DATAが返され、参照結果の接続文字列が変更されていない場合は、エラーが発生し、アプリケーションは SQLGetDiagRec を呼び出して、参照時エラーの SQLSTATE を返すことができます。 これにより、アプリケーションで 属性を修正し、参照を続行できます。

アプリケーションは、 SQLDisconnect を呼び出すことによって、いつでも参照プロセスを終了できます。 ドライバーは、未処理の接続を終了し、接続されていない状態に接続を返します。

接続ハンドルで非同期操作が有効になっている場合、 SQLBrowseConnect はSQL_STILL_EXECUTINGも返す可能性があります。 SQL_NEED_DATAを返すときは、アプリケーションで SQLDisconnect を使用して参照プロセスを取り消す必要があります。 SQLBrowseConnect がSQL_STILL_EXECUTINGを返す場合、アプリケーションは SQLCancelHandle を使用して進行中の操作を取り消す必要があります。 関数がSQL_NEED_DATAを返した後に SQLCancelHandle を呼び出しても効果はありません。

詳細については、「 SQLBrowseConnect を使用した接続」を参照してください。

ドライバーが SQLBrowseConnect をサポートしている場合、ドライバーのシステム情報の driver キーワード セクションには、3 番目の文字が "Y" に設定された ConnectFunctions キーワードが含まれている必要があります。

コード例

Note

Windows 認証をサポートするデータ ソース プロバイダーに接続する場合は、接続文字列にユーザー ID とパスワード情報の代わりに を指定Trusted_Connection=yesする必要があります。

次の例では、アプリケーションは SQLBrowseConnect を繰り返し呼び出します。 SQLBrowseConnect は、SQL_NEED_DATAを返すたびに、*OutConnectionString で必要なデータに関する情報を返します。 アプリケーションは 、OutConnectionString をそのルーチン GetUserInput (図示せず) に渡します。 GetUserInput は情報を解析し、ダイアログ ボックスを作成して表示し、*InConnectionString にユーザーが入力した情報を返します。 アプリケーションは、 次の SQLBrowseConnect の呼び出しで、ユーザーの情報をドライバーに渡します。 ドライバーがデータ ソースに接続するために必要なすべての情報をアプリケーションで提供すると、 SQLBrowseConnect はSQL_SUCCESSを返し、アプリケーションを続行します。

SQLBrowseConnect を呼び出してSQL Server ドライバーに接続する詳細な例については、「SQL Server参照の例」を参照してください。

たとえば、データ ソース Sales に接続するには、次のアクションが発生する可能性があります。 最初に、アプリケーションは次の文字列を SQLBrowseConnect に渡します。

"DSN=Sales"  

ドライバー マネージャーは、データ ソース Sales に関連付けられているドライバーを読み込みます。 次に、アプリケーションから受け取ったのと同じ引数を使用して、ドライバーの SQLBrowseConnect 関数を呼び出します。 ドライバーは、*OutConnectionString で次の文字列を返します。

"HOST:Server={red,blue,green};UID:ID=?;PWD:Password=?"  

アプリケーションは、この文字列を GetUserInput ルーチンに渡します。これにより、赤、青、または緑のサーバーを選択し、ユーザー ID とパスワードを入力するようにユーザーに求めるダイアログ ボックスが作成されます。 ルーチンは、次のユーザー指定の情報を *InConnectionString に渡します。この情報は、アプリケーションが SQLBrowseConnect に渡します。

"HOST=red;UID=Smith;PWD=Sesame"  

SQLBrowseConnect は、この情報を使用して、パスワードを使用して Smith として赤いサーバーに接続し、*OutConnectionString で次の文字列を返します。

"*DATABASE:Database={SalesEmployees,SalesGoals,SalesOrders}"  

アプリケーションは、この文字列を GetUserInput ルーチンに渡します。これにより、ユーザーにデータベースの選択を求めるダイアログ ボックスが作成されます。 ユーザーが empdata を選択すると、アプリケーションは SQLBrowseConnect をこの文字列で最後の時刻に呼び出します。

"DATABASE=SalesOrders"  

これは、ドライバーがデータ ソースに接続するために必要な情報の最後の部分です。 SQLBrowseConnect はSQL_SUCCESSを返し、*OutConnectionString には完了した接続文字列が含まれています。

// SQLBrowseConnect_Function.cpp  
// compile with: odbc32.lib  
#include <windows.h>  
#include <sqltypes.h>  
#include <sqlext.h>  
  
#define BRWS_LEN 100  
SQLHENV henv;  
SQLHDBC hdbc;  
SQLHSTMT hstmt;  
SQLRETURN retcode;  
SQLCHAR szConnStrIn[BRWS_LEN], szConnStrOut[BRWS_LEN];  
SQLSMALLINT cbConnStrOut;  
  
void GetUserInput(SQLCHAR * szConnStrOut, SQLCHAR * szConnStrIn) {}  
  
int main() {  
   // Allocate the environment handle.  
   retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);        
   if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
  
      // Set the version environment attribute.  
      retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);  
      if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
  
         // Allocate the connection handle.  
         retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);  
         if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
            // Call SQLBrowseConnect until it returns a value other than SQL_NEED_DATA   
            // (pass data source name the first time).  If SQL_NEED_DATA is returned, call GetUserInput   
            // (not shown) to build a dialog from the values in szConnStrOut.  The user-supplied values   
            // are returned in szConnStrIn, which is passed in the next call to SQLBrowseConnect.  
  
            strcpy_s((char*)szConnStrIn, _countof(szConnStrIn), "DSN=Sales");  
            do {  
               retcode = SQLBrowseConnect(hdbc, szConnStrIn, SQL_NTS,  
                  szConnStrOut, BRWS_LEN, &cbConnStrOut);  
               if (retcode == SQL_NEED_DATA)  
                  GetUserInput(szConnStrOut, szConnStrIn);  
            } while (retcode == SQL_NEED_DATA);  
  
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){  
  
               // Allocate the statement handle.  
               retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);  
  
               if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)  
                  // Process data after successful connection  
                  SQLFreeHandle(SQL_HANDLE_STMT, hstmt);  
               SQLDisconnect(hdbc);  
            }  
         }  
         SQLFreeHandle(SQL_HANDLE_DBC, hdbc);  
      }  
   }  
   SQLFreeHandle(SQL_HANDLE_ENV, henv);  
}  
対象 解決方法については、
接続ハンドルの割り当て SQLAllocHandle 関数
データ ソースに接続する SQLConnect 関数
データ ソースからの切断 SQLDisconnect 関数
接続文字列またはダイアログ ボックスを使用したデータ ソースへの接続 SQLDriverConnect 関数
ドライバーの説明と属性を返す SQLDrivers 関数
接続ハンドルの解放 SQLFreeHandle 関数

参照

ODBC API リファレンス
ODBC ヘッダー ファイル