SQLSetConnectOption のマッピング
ODBC 2 の場合。x アプリケーションは、ODBC 3*.x* ドライバーを介して SQLSetConnectOption を呼び出します。
SQLSetConnectOption(hdbc, fOption, vParam)
結果は次のようになります。
fOption が文字列を必要とする ODBC 定義の接続属性を示す場合、ドライバー マネージャーは を呼び出します。
SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, SQL_NTS)
fOption が 32 ビット整数値を返す ODBC で定義された接続属性を示す場合、ドライバー マネージャーは を呼び出します。
SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, 0)
fOption がドライバー定義の接続属性を示す場合、ドライバー マネージャーは を呼び出します。
SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, BufferLength)
上記の 3 つの場合、 ConnectionHandle 引数は hdbc の値に設定され、 Attribute 引数は fOption の値に設定され、 ValuePtr 引数は vParam と同じ値に設定されます。
ドライバー マネージャーは、ドライバー定義の接続属性が文字列または 32 ビットの整数値を必要とするかどうかを認識しないため、SQLSetConnectAttr の BufferLength 引数の有効な値を渡す必要があります。 ドライバーがドライバー定義の接続属性の特別なセマンティクスを定義しており、 SQLSetConnectOption を使用して呼び出す必要がある場合は、 SQLSetConnectOption をサポートする必要があります。
ODBC 2 の場合。x アプリケーションは SQLSetConnectOption を呼び出して ODBC 3*.x* ドライバーでドライバー固有のステートメント オプションを設定し、オプションは ODBC 2 で定義されています。ドライバーの x バージョンでは、ODBC 3*.x* ドライバーの オプションに対して新しいマニフェスト定数を定義する必要があります。 SQLSetConnectOption の呼び出しで古いマニフェスト定数が使用されている場合、ドライバー マネージャーは StringLength 引数を 0 に設定して SQLSetConnectAttr を呼び出します。
ODBC 3*.x* ドライバーの場合、ドライバー マネージャーは 、fOption がSQL_CONN_OPT_MINとSQL_CONN_OPT_MAXの間にあるか、SQL_CONNECT_OPT_DRVR_STARTより大きいかどうかを確認しなくなりました。
接続レベルでのステートメント オプションの設定
ODBC 2 の場合。x、 アプリケーションは SQLSetConnectOption を呼び出してステートメント オプションを設定できます。 これが完了すると、ドライバーは、その接続に後で割り当てられたステートメントの既定値として ステートメント オプションを確立します。 ドライバーが、指定した接続に関連付けられている既存のステートメントのステートメント オプションを設定するかどうかは、ドライバーによって定義されます。
この機能は、ODBC 3*.x* では非推奨となりました。 ODBC 3*.x* ドライバーでは、ODBC 2 の設定のみをサポートする必要があります。ODBC 2 を操作する場合は、接続レベルの x ステートメント属性。これを 行う x アプリケーション。 ODBC 3*.x* アプリケーションでは、接続レベルでステートメント属性を設定しないでください。 ODBC 3*.x* ステートメント属性は接続レベルで設定できません。ただし、接続属性とステートメント属性の両方であるSQL_ATTR_METADATA_ID属性とSQL_ATTR_ASYNC_ENABLE属性を除き、接続レベルまたはステートメント レベルで設定できます。