SQL から C へ: Binary
バイナリ ODBC SQL データ型の識別子は次のとおりです。
SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY
次の表は、バイナリ SQL データの変換先となる ODBC C データ型を示しています。 テーブル内の列と用語の詳細については、「 SQL から C データ型へのデータの変換」を参照してください。
C 型識別子 | テスト | *TargetValuePtr | *StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | (データのバイト長) * 2 <BufferLength (データのバイト長) * 2 >= BufferLength |
Data 切り捨てられたデータ |
データの長さ (バイト単位) データの長さ (バイト単位) |
該当なし 01004 |
SQL_C_WCHAR | (データの文字長) * 2 <BufferLength (データの文字長) * 2 >= BufferLength |
Data 切り捨てられたデータ |
文字単位のデータの長さ 文字単位のデータの長さ |
該当なし 01004 |
SQL_C_BINARY | データ <のバイト長 = BufferLength データ >BufferLength のバイト長 |
Data 切り捨てられたデータ |
データの長さ (バイト単位) データの長さ (バイト単位) |
該当なし 01004 |
バイナリ SQL データを文字 C データに変換すると、ソース データの各バイト (8 ビット) は 2 つの ASCII 文字として表されます。 これらの文字は、16 進形式の数値の ASCII 文字表現です。 たとえば、バイナリ 00000001は "01" に変換され、バイナリ 11111111は "FF" に変換されます。
ドライバーは常に個々のバイトを 16 進数のペアに変換し、null バイトで文字列を終了します。 このため、 BufferLength が偶数で、変換されたデータの長さより小さい場合、*TargetValuePtr バッファーの最後のバイトは使用されません。 (変換されたデータには偶数バイトが必要で、次から最後のバイトは null バイトで、最後のバイトは使用できません)。
Note
アプリケーション開発者は、バイナリ SQL データを文字 C データ型にバインドしないことをお勧めします。 通常、この変換は非効率的で低速です。