次の方法で共有


データ バッファーの種類

バッファーの C データ型は、アプリケーションによって指定されます。 1 つの変数を使用すると、アプリケーションが変数を割り当てるときに発生します。 ジェネリック メモリ (つまり、void 型のポインターによって指されるメモリ) では、これは、アプリケーションがメモリを特定の型にキャストするときに発生します。 ドライバーは、次の 2 つの方法でこの種類を検出します。

  • データ バッファー型引数。 パラメーター値と結果セット データを転送するために使用されるバッファー (SQLBindColTargetValuePtr でバインドされたバッファーなど) には、通常、SQLBindColTargetType 引数などの型引数が関連付けられています。 この引数では、アプリケーションはバッファーの型に対応する C 型識別子を渡します。 たとえば、次の SQLBindCol の呼び出しでは、値 SQL_C_TYPE_DATE は、日付バッファーが SQL_DATE_STRUCT であることをドライバーに通知します。

    SQL_DATE_STRUCT Date;  
    SQLINTEGER  DateInd;  
    SQLBindCol(hstmt, 1, SQL_C_TYPE_DATE, &Date, 0, &DateInd);  
    

    型識別子の詳細については、このセクションで後述する「ODBC のデータ型」セクションを参照してください。

  • 定義済みの型。 オプションまたは属性の送受信に使用されるバッファー (SQLGetInfoInfoValuePtr 引数が指すバッファーなど) には、指定されたオプションに依存する固定型があります。 ドライバーは、データ バッファーがこの型であることを前提としています。この型のバッファーを割り当てるのはアプリケーションの責任です。 たとえば、次の SQLGetInfo の呼び出しでは、ドライバーはバッファーが 32 ビット整数であると見なします。これは、SQL_STRING_FUNCTIONS オプションに必要なものであるためです。

    SQLUINTEGER StringFuncs;  
    SQLGetInfo(hdbc, SQL_STRING_FUNCTIONS, (SQLPOINTER) &StringFuncs, 0,  
                NULL);  
    

ドライバーは、バッファー内のデータを解釈するために C データ型を使用します。