環境ハンドルの割り当て

ODBC アプリケーションの最初のタスクは、ドライバー マネージャーを読み込みます。これを行う方法はオペレーティング システムによって異なります。 たとえば、Microsoft Windows NT Server/Windows 2000 Server、Windows NT Workstation/Windows 2000 Professional、Microsoft Windows 95/98 で動作しているコンピュータでは、アプリケーションはドライバー マネージャー ライブラリにリンクするか、LoadLibraryを呼び出してドライバー マネージャー DLL を読み込みます。

アプリケーションが他の ODBC 関数を呼び出す前に実行する必要がある次のタスクは、次のように ODBC 環境を初期化し、環境ハンドルを割り当てることです。

  1. アプリケーションは、SQLHENV 型の変数を宣言します。 その後、SQLAllocHandle を呼び出し、この変数のアドレスと SQL_HANDLE_ENV オプションを渡します。 次に例を示します。

    SQLHENV henv1;  
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);  
    
  2. ドライバー マネージャーは、環境に関する情報を格納する構造体を割り当て、変数に環境ハンドルを返します。

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

アプリケーションで ODBC の使用が完了すると、SQLFreeHandle を使用して環境ハンドルが解放されます。 環境を解放した後、ODBC 関数の呼び出しで環境のハンドルを使用するのはアプリケーション プログラミング エラーです。そうすることは未定義ですが、おそらく致命的な結果です。

SQLFreeHandle が呼び出されると、ドライバーは環境に関する情報を格納するために使用される構造体を解放します。 SQLFreeHandle は、その環境ハンドル上のすべての接続ハンドルが解放されるまで、環境ハンドルに対して呼び出すことはできません。

環境ハンドルの使用方法の詳細については、「環境ハンドル」を参照してください。