MYSQL_BIND
結構的 buffer_type
成員會指出繫結到語句參數或結果集欄位的 C 語言變數的資料類型。對於輸入,buffer_type
會指出包含要傳送至伺服器之值的變數類型。對於輸出,它會指出應儲存從伺服器接收之值的變數類型。
下表顯示了傳送至伺服器的輸入值之 MYSQL_BIND
結構的 buffer_type
成員允許的值。表格顯示了您可以使用的 C 變數類型、對應的類型代碼,以及可在不轉換的情況下使用所提供值的 SQL 資料類型。請根據您要繫結的 C 語言變數的資料類型來選擇 buffer_type
值。對於整數類型,您也應該設定 is_unsigned
成員,以指出變數是有號還是無號。
表 6.1 MYSQL_BIND 結構允許的輸入資料類型
輸入變數 C 類型 |
buffer_type 值 |
目的地值的 SQL 類型 |
---|---|---|
signed char |
MYSQL_TYPE_TINY |
TINYINT |
short int |
MYSQL_TYPE_SHORT |
SMALLINT |
int |
MYSQL_TYPE_LONG |
INT |
long long int |
MYSQL_TYPE_LONGLONG |
BIGINT |
float |
MYSQL_TYPE_FLOAT |
FLOAT |
double |
MYSQL_TYPE_DOUBLE |
DOUBLE |
MYSQL_TIME |
MYSQL_TYPE_TIME |
TIME |
MYSQL_TIME |
MYSQL_TYPE_DATE |
DATE |
MYSQL_TIME |
MYSQL_TYPE_DATETIME |
DATETIME |
MYSQL_TIME |
MYSQL_TYPE_TIMESTAMP |
TIMESTAMP |
char[] |
MYSQL_TYPE_STRING |
TEXT 、CHAR 、VARCHAR |
char[] |
MYSQL_TYPE_BLOB |
BLOB 、BINARY 、VARBINARY |
MYSQL_TYPE_NULL |
NULL |
如第 6.2 節「C API 預處理語句資料結構」中對 is_null
成員的描述所示,使用 MYSQL_TYPE_NULL
。
對於輸入字串資料,請根據值是字元 (非二進位) 字串還是二進位字串,使用 MYSQL_TYPE_STRING
或 MYSQL_TYPE_BLOB
。
MYSQL_TYPE_STRING
表示字元輸入字串資料。假設該值位於character_set_client
系統變數所指示的字元集中。如果伺服器將該值儲存到具有不同字元集的欄位中,它會將該值轉換為該字元集。MYSQL_TYPE_BLOB
表示二進位輸入字串資料。該值會被視為具有binary
字元集。也就是說,它會被視為位元組字串,並且不會發生轉換。
下表顯示了從伺服器接收的輸出值之 MYSQL_BIND
結構的 buffer_type
成員允許的值。表格顯示了接收值的 SQL 類型、這些值在結果集元資料中擁有的對應類型代碼,以及建議繫結到 MYSQL_BIND
結構以接收 SQL 值而不進行轉換的 C 語言資料類型。請根據您要繫結的 C 語言變數的資料類型來選擇 buffer_type
值。對於整數類型,您也應該設定 is_unsigned
成員,以指出變數是有號還是無號。
表 6.2 MYSQL_BIND 結構允許的輸出資料類型
接收值的 SQL 類型 |
buffer_type 值 |
輸出變數 C 類型 |
---|---|---|
TINYINT |
MYSQL_TYPE_TINY |
signed char |
SMALLINT |
MYSQL_TYPE_SHORT |
short int |
MEDIUMINT |
MYSQL_TYPE_INT24 |
int |
INT |
MYSQL_TYPE_LONG |
int |
BIGINT |
MYSQL_TYPE_LONGLONG |
long long int |
FLOAT |
MYSQL_TYPE_FLOAT |
float |
DOUBLE |
MYSQL_TYPE_DOUBLE |
double |
DECIMAL |
MYSQL_TYPE_NEWDECIMAL |
char[] |
YEAR |
MYSQL_TYPE_SHORT |
short int |
TIME |
MYSQL_TYPE_TIME |
MYSQL_TIME |
DATE |
MYSQL_TYPE_DATE |
MYSQL_TIME |
DATETIME |
MYSQL_TYPE_DATETIME |
MYSQL_TIME |
TIMESTAMP |
MYSQL_TYPE_TIMESTAMP |
MYSQL_TIME |
CHAR 、BINARY |
MYSQL_TYPE_STRING |
char[] |
VARCHAR 、VARBINARY |
MYSQL_TYPE_VAR_STRING |
char[] |
TINYBLOB 、TINYTEXT |
MYSQL_TYPE_TINY_BLOB |
char[] |
BLOB 、TEXT |
MYSQL_TYPE_BLOB |
char[] |
MEDIUMBLOB 、MEDIUMTEXT |
MYSQL_TYPE_MEDIUM_BLOB |
char[] |
LONGBLOB 、LONGTEXT |
MYSQL_TYPE_LONG_BLOB |
char[] |
BIT |
MYSQL_TYPE_BIT |
char[] |