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 類型、此類值在結果集元資料中具有的對應類型代碼,以及將不進行轉換接收 SQL 值時建議繫結至 MYSQL_BIND
結構的 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[] |