Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere ODBC API » ODBC 接続関数の選択

 

接続の確立

アプリケーションでデータベース操作を実行するには、接続を確立します。

♦  ODBC 接続を確立するには、次の手順に従います。
  1. ODBC 環境を割り付けます。

    例:

    SQLHENV   env;
    SQLRETURN retcode;
    retcode = SQLAllocHandle( SQL_HANDLE_ENV,
      SQL_NULL_HANDLE, &env );
  2. ODBC のバージョンを宣言します。

    アプリケーションが ODBC バージョン 3 に準拠するように宣言すると、SQLSTATE 値と他のバージョン依存の機能が適切な動作に設定されます。次に例を示します。

    retcode = SQLSetEnvAttr( env,
      SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
  3. 必要な場合は、データ・ソースまたは接続文字列をアセンブルします。

    アプリケーションによっては、データ・ソースや接続文字列をハードコードしたり、柔軟性を高めるために外部に格納したりできます。

  4. ODBC 接続項目を割り付けます。

    例:

    retcode = SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc );
  5. 接続前に必要な接続属性を設定します。

    接続属性には、接続を確立する前または後に必ず設定するものと、確立前に設定しても後に設定してもかまわないものがあります。SQL_AUTOCOMMIT 属性は、接続の確立前にでも後にでも設定できる属性です。

    retcode = SQLSetConnectAttr( dbc,
       SQL_AUTOCOMMIT, 
       (SQLPOINTER)SQL_AUTOCOMMIT_OFF, 0 );

    詳細については、接続属性の設定を参照してください。

  6. ODBC 接続関数を呼び出します。

    例:

    if (retcode == SQL_SUCCESS 
        || retcode == SQL_SUCCESS_WITH_INFO) {
       printf( "dbc allocated\n" );
       retcode = SQLConnect( dbc,
          (SQLCHAR*) "SQL Anywhere 11 Demo", SQL_NTS,
          (SQLCHAR* ) "DBA", SQL_NTS,
          (SQLCHAR*) "sql", SQL_NTS );
       if (retcode == SQL_SUCCESS
             || retcode == SQL_SUCCESS_WITH_INFO){
       // successfully connected.

完全なサンプルは、samples-dir\SQLAnywhere\ODBCConnect\odbcconnect.cpp にあります。

注意
  • SQL_NTS   ODBC に渡される各文字列には、固有の長さがあります。長さがわからない場合は、終端を NULL 文字 (\0) でマークした「NULL で終了された文字列」であることを示す SQL_NTS を渡すことができます。

  • SQLSetConnectAttr   デフォルトでは、ODBC はオートコミット・モードで動作します。このモードは、SQL_AUTOCOMMIT を false に設定してオフにすることができます。

    詳細については、接続属性の設定を参照してください。


接続属性の設定
接続属性の取得
ODBC アプリケーションでのスレッドと接続