SQL 至 C:二進位
二進位 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 |
資料 截斷的資料 |
以位元組為單位的資料長度 以位元組為單位的資料長度 |
n/a 01004 |
SQL_C_WCHAR | (資料字元長度) * 2 < BufferLength (資料字元長度) * 2 > = BufferLength |
資料 截斷的資料 |
以字元為單位的資料長度 以字元為單位的資料長度 |
n/a 01004 |
SQL_C_BINARY | 位元組長度的資料 < = BufferLength 資料 > BufferLength 的位元組長度 |
資料 截斷的資料 |
以位元組為單位的資料長度 以位元組為單位的資料長度 |
n/a 01004 |
當二進位 SQL 資料轉換成字元 C 資料時,來源資料的每個位元組 (8 位) 會以兩個 ASCII 字元表示。 這些字元是十六進位格式數位的 ASCII 字元標記法。 例如,二進位00000001會轉換成 「01」,而二進位11111111會轉換成 「FF」。
驅動程式一律會將個別位元組轉換成十六進位數位組,並以 Null 位元組終止字元字串。 因此,如果 BufferLength 是偶數且小於已轉換資料的長度,就不會使用 * TargetValuePtr 緩衝區的最後一個位元組。 (轉換的資料需要偶數個位元組,下一個位元組是 Null 位元組,而且不能使用最後一個位元組。
注意
不建議應用程式開發人員將二進位 SQL 資料系結至字元 C 資料類型。 此轉換通常效率低下且緩慢。