次の方法で共有


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 データ型にバインドしないことをお勧めします。 通常、この変換は非効率的で低速です。