接続ハンドルの割り当て (ODBC)

アプリケーションからデータ ソースまたはドライバーに接続する前に、次のように接続ハンドルを割り当てる必要があります。

  1. アプリケーションで SQLHDBC という型の変数を宣言します。 次に、SQLAllocHandle を呼び出し、この変数のアドレス、接続を割り当てる環境のハンドル、および SQL_HANDLE_DBC オプションを渡します。 次に例を示します。

    SQLHDBC hdbc1;  
    
    SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);  
    
  2. ドライバー マネージャーは、ステートメントに関する情報を格納する構造体を割り当て、変数に接続ハンドルを返します。

ドライバー マネージャーは、呼び出すドライバーが不明であるため、この時点ではドライバーで SQLAllocHandle を呼び出しません。 データ ソースに接続する関数をアプリケーションが呼び出すまで、ドライバーでの SQLAllocHandle の呼び出しが遅延されます。 詳細については、このセクションで後述する「接続プロセスにおけるドライバー マネージャーの役割」を参照してください。

接続ハンドルの割り当ては、ドライバーの読み込みと同じではないことに注意してください。 接続関数が呼び出されるまで、ドライバーは読み込まれません。 したがって、接続ハンドルを割り当てた後で、ドライバーまたはデータ ソースに接続する前に、アプリケーションが接続ハンドルで呼び出すことができる関数は、SQL_ODBC_VER オプション付きの SQLSetConnectAttrSQLGetConnectAttrSQLGetInfo のみです。 接続ハンドルを使用して他の関数 (SQLEndTran など) を呼び出すと、SQLSTATE 08003 が返されます (接続は開いていません)。 完全な詳細については、「付録 B: ODBC 状態遷移テーブル」を参照してください。

接続文字列の詳細については、「接続ハンドル」を参照してください。