ps:來自https://www.mysqlzh.com/doc/194.html
MYSQL_FIELDS結(jié)構(gòu)
char *name
字段名稱拖陆,由NULL終結(jié)的字符串报亩。
char * org_name
字段名稱咆蒿,由NULL終結(jié)的字符串;忽略別名围橡。
char * table
包含該字段的表的名稱少漆,如果該字段不是計(jì)算出的字段的話章郁。
char * org_table
表的名稱,由Null終結(jié)的字符串碰纬。忽略別名。
char * db
字段源自的數(shù)據(jù)庫的名稱问芬,由Null終結(jié)的字符串悦析。
char * catalog
catalog的名稱;該值總是"def"此衅。
char * def
該字段的默認(rèn)值是由Null終結(jié)的字符串;僅當(dāng)使用mysql_list_fields()
時(shí)才設(shè)置它强戴。
unsigned long length
字段的寬度,例如如果為int應(yīng)該是4字節(jié)寬度挡鞍。
unsigned long max_length
用于結(jié)果集的字段的最大寬度骑歹。
unsigned int org_name_length
org_name的長(zhǎng)度。
unsigned int table_length
表名的長(zhǎng)度墨微。
unsigned int db_length
數(shù)據(jù)庫名的長(zhǎng)度道媚。
unsigned int flags
用于字段的不同“位標(biāo)志”。如下表
標(biāo)志值 | 標(biāo)志描述 |
---|---|
NOT_NULL_FLAG | 字段不能為NULL |
PRI_KEY_FLAG | 字段是主鍵的組成部分 |
UNIQUE_KEY_FLAG | 字段是唯一鍵的組成部分 |
MULTIPLE_KEY_FLAG | 字段是非唯一鍵的組成部分 |
UNSIGNED_FLAG | 字段具有UNSIGNED屬性 |
ZEROFILL_FLAG | 字段具有ZEROFILL屬性 |
BINARY_FLAG | 字段具有BINARY屬性 |
AUTO_INCREMENT_FLAG | 字段具有AUTO_INCREMENT屬性 |
ENUM_FLAG | 字段是ENUM(不再重視) |
SET_FLAG | 字段是 SET(不再重視) |
BLOB_FLAG | 字段是BLOB或TEXT(不再重視) |
TIMESTAMP_FLAG | 字段是TIMESTAMP(不再重視) |
flag使用如下:
if (field->flags & NOT_NULL_FLAG)
printf("Field can't be null\n");
標(biāo)志狀態(tài) | 描述 |
---|---|
IS_NOT_NULL(flags) | 如果該字段定義為NOT NULL,為“真”衰琐。 |
IS_PRI_KEY(flags) | 如果該字段是主鍵也糊,為“真”。 |
IS_BLOB(flags) | 如果該字段是BLOB或TEXT羡宙,為“真”(不再重視狸剃,用測(cè)試field->type取而代之)。 |
enum enum_field_types type
字段類型狗热。
類型值 | 類型描述 |
---|---|
MYSQL_TYPE_TINY | TINYINT字段 |
MYSQL_TYPE_SHORT | SMALLINT字段 |
MYSQL_TYPE_LONG | INTEGER字段 |
MYSQL_TYPE_INT24 | MEDIUMINT字段 |
MYSQL_TYPE_LONGLONG | BIGINT字段 |
MYSQL_TYPE_DECIMAL | DECIMAL或NUMERIC字段 |
MYSQL_TYPE_NEWDECIMAL | 精度數(shù)學(xué)DECIMAL或NUMERIC |
MYSQL_TYPE_FLOAT | FLOAT字段 |
MYSQL_TYPE_DOUBLE | DOUBLE或REAL字段 |
MYSQL_TYPE_BIT | BIT字段 |
MYSQL_TYPE_TIMESTAMP | TIMESTAMP字段 |
MYSQL_TYPE_DATE | DATE字段 |
MYSQL_TYPE_TIME | TIME字段 |
MYSQL_TYPE_DATETIME | DATETIME字段 |
MYSQL_TYPE_YEAR | YEAR字段 |
MYSQL_TYPE_STRING | CHAR字段 |
MYSQL_TYPE_VAR_STRING | VARCHAR字段 |
MYSQL_TYPE_BLOB | BLOB或TEXT字段(使用max_length來確定最大長(zhǎng)度) |
MYSQL_TYPE_SET | SET字段 |
MYSQL_TYPE_ENUM | ENUM字段 |
MYSQL_TYPE_GEOMETRY | Spatial字段 |
MYSQL_TYPE_NULL | NULL-type字段 |
MYSQL_TYPE_CHAR | 不再重視钞馁,用MYSQL_TYPE_TINY取代 |
可以使用IS_NUM()宏來測(cè)試字段是否具有數(shù)值類型。將類型值傳遞給IS_NUM()匿刮,如果字段為數(shù)值類型僧凰,會(huì)將其評(píng)估為“真”:
if (IS_NUM(field->type))
printf("Field is numeric\n");
C API 函數(shù)
函數(shù) | 描述 |
---|---|
mysql_affected_rows() | 返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數(shù)熟丸。 |
mysql_autocommit() | 切換 autocommit模式训措,ON/OFF |
mysql_change_user() | 更改打開連接上的用戶和數(shù)據(jù)庫。 |
mysql_charset_name() | 返回用于連接的默認(rèn)字符集的名稱光羞。 |
mysql_close() | 關(guān)閉服務(wù)器連接绩鸣。 |
mysql_commit() | 提交事務(wù)。 |
mysql_connect() | 連接到MySQL服務(wù)器纱兑。該函數(shù)已不再被重視呀闻,使用mysql_real_connect()取代。 |
mysql_create_db() | 創(chuàng)建數(shù)據(jù)庫潜慎。該函數(shù)已不再被重視捡多,使用SQL語句CREATE DATABASE取而代之。 |
mysql_data_seek() | 在查詢結(jié)果集中查找屬性行編號(hào)铐炫。 |
mysql_debug() | 用給定的字符串執(zhí)行DBUG_PUSH垒手。 |
mysql_drop_db() | 撤銷數(shù)據(jù)庫。該函數(shù)已不再被重視驳遵,使用SQL語句DROP DATABASE取而代之淫奔。 |
mysql_dump_debug_info() | 讓服務(wù)器將調(diào)試信息寫入日志。 |
mysql_eof() | 確定是否讀取了結(jié)果集的最后一行堤结。該函數(shù)已不再被重視唆迁,可以使用mysql_errno()或mysql_error()取而代之。 |
mysql_errno() | 返回上次調(diào)用的MySQL函數(shù)的錯(cuò)誤編號(hào)竞穷。 |
mysql_error() | 返回上次調(diào)用的MySQL函數(shù)的錯(cuò)誤消息唐责。 |
mysql_escape_string() | 為了用在SQL語句中,對(duì)特殊字符進(jìn)行轉(zhuǎn)義處理瘾带。 |
mysql_fetch_field() | 返回下一個(gè)表字段的類型鼠哥。 |
mysql_fetch_field_direct() | 給定字段編號(hào),返回表字段的類型。 |
mysql_fetch_fields() | 返回所有字段結(jié)構(gòu)的數(shù)組朴恳。 |
mysql_fetch_lengths() | 返回當(dāng)前行中所有列的長(zhǎng)度抄罕。 |
mysql_fetch_row() | 從結(jié)果集中獲取下一行 |
mysql_field_seek() | 將列光標(biāo)置于指定的列。 |
mysql_field_count() | 返回上次執(zhí)行語句的結(jié)果列的數(shù)目于颖。 |
mysql_field_tell() | 返回上次mysql_fetch_field()所使用字段光標(biāo)的位置呆贿。 |
mysql_free_result() | 釋放結(jié)果集使用的內(nèi)存。 |
mysql_get_client_info() | 以字符串形式返回客戶端版本信息森渐。 |
mysql_get_client_version() | 以整數(shù)形式返回客戶端版本信息做入。 |
mysql_get_host_info() | 返回描述連接的字符串。 |
mysql_get_server_version() | 以整數(shù)形式返回服務(wù)器的版本號(hào)同衣。 |
mysql_get_proto_info() | 返回連接所使用的協(xié)議版本竟块。 |
mysql_get_server_info() | 返回服務(wù)器的版本號(hào)。 |
mysql_info() | 返回關(guān)于最近所執(zhí)行查詢的信息耐齐。 |
mysql_init() | 獲取或初始化MYSQL結(jié)構(gòu)浪秘。 |
mysql_insert_id() | 返回上一個(gè)查詢?yōu)锳UTO_INCREMENT列生成的ID。 |
mysql_kill() | 殺死給定的線程蚪缀。 |
mysql_library_end() | 最終確定MySQL C API庫秫逝。 |
mysql_library_init() | 初始化MySQL C API庫。 |
mysql_list_dbs() | 返回與簡(jiǎn)單正則表達(dá)式匹配的數(shù)據(jù)庫名稱询枚。 |
mysql_list_fields() | 返回與簡(jiǎn)單正則表達(dá)式匹配的字段名稱。 |
mysql_list_processes() | 返回當(dāng)前服務(wù)器線程的列表浙巫。 |
mysql_list_tables() | 返回與簡(jiǎn)單正則表達(dá)式匹配的表名金蜀。 |
mysql_more_results() | 檢查是否還存在其他結(jié)果。 |
mysql_next_result() | 在多語句執(zhí)行過程中返回/初始化下一個(gè)結(jié)果的畴。 |
mysql_num_fields() | 返回結(jié)果集中的列數(shù)渊抄。 |
mysql_num_rows() | 返回結(jié)果集中的行數(shù)。 |
mysql_options() | 為mysql_connect()設(shè)置連接選項(xiàng)丧裁。 |
mysql_ping() | 檢查與服務(wù)器的連接是否工作护桦,如有必要重新連接。 |
mysql_query() | 執(zhí)行指定為“以Null終結(jié)的字符串”的SQL查詢煎娇。 |
mysql_real_connect() | 連接到MySQL服務(wù)器二庵。 |
mysql_real_escape_string() | 考慮到連接的當(dāng)前字符集,為了在SQL語句中使用缓呛,對(duì)字符串中的特殊字符進(jìn)行轉(zhuǎn)義處理催享。 |
mysql_real_query() | 執(zhí)行指定為計(jì)數(shù)字符串的SQL查詢。 |
mysql_refresh() | 刷新或復(fù)位表和高速緩沖哟绊。 |
mysql_reload() | 通知服務(wù)器再次加載授權(quán)表因妙。 |
mysql_rollback() | 回滾事務(wù)。 |
mysql_row_seek() | 使用從mysql_row_tell()返回的值,查找結(jié)果集中的行偏移攀涵。 |
mysql_row_tell() | 返回行光標(biāo)位置铣耘。 |
mysql_select_db() | 選擇數(shù)據(jù)庫。 |
mysql_server_end() | 最終確定嵌入式服務(wù)器庫以故。 |
mysql_server_init() | 初始化嵌入式服務(wù)器庫涡拘。 |
mysql_set_server_option() | 為連接設(shè)置選項(xiàng)(如多語句)。 |
mysql_sqlstate() | 返回關(guān)于上一個(gè)錯(cuò)誤的SQLSTATE錯(cuò)誤代碼据德。 |
mysql_shutdown() | 關(guān)閉數(shù)據(jù)庫服務(wù)器鳄乏。 |
mysql_stat() | 以字符串形式返回服務(wù)器狀態(tài)。 |
mysql_store_result() | 檢索完整的結(jié)果集至客戶端棘利。 |
mysql_thread_id() | 返回當(dāng)前線程ID橱野。 |
mysql_thread_safe() | 如果客戶端已編譯為線程安全的,返回1善玫。 |
mysql_use_result() | 初始化逐行的結(jié)果集檢索水援。 |
mysql_warning_count() | 返回上一個(gè)SQL語句的告警數(shù)。 |
C API預(yù)處理語句數(shù)據(jù)類型
MYSQL_STMT
該結(jié)構(gòu)表示預(yù)處理語句茅郎。通過調(diào)用mysql_stmt_init()
創(chuàng)建語句蜗元,返回語句句柄,即指向MYSQL_STMT
的指針系冗。該句柄用戶所有后續(xù)的與語句有關(guān)的函數(shù)奕扣,直至使用mysql_stmt_close()
關(guān)閉了它為止。
MYSQL_BIND
該結(jié)構(gòu)用于語句輸入(發(fā)送給服務(wù)器的數(shù)據(jù)值)和輸出(從服務(wù)器返回的結(jié)果值)掌敬。對(duì)于輸入惯豆,它與mysql_stmt_bind_param()
一起使用,用于將參數(shù)數(shù)據(jù)值綁定到緩沖區(qū)上奔害,以供mysql_stmt_execute()
使用楷兽。對(duì)于輸出,它與mysql_stmt_bind_result()
一起使用华临,用于綁定結(jié)果緩沖區(qū)芯杀,以便用于和mysql_stmt_fetch()
以獲取行。
MYSQL_BIND結(jié)構(gòu):
enum enum_field_types buffer_type
緩沖的類型雅潭。如下:
buffer_type值 | SQL類型 | C類型 |
MYSQL_TYPE_TINY | TINYINT | char |
MYSQL_TYPE_SHORT | SMALLINT | short int |
MYSQL_TYPE_LONG | INT | int |
MYSQL_TYPE_LONGLONG | BIGINT | long long int |
MYSQL_TYPE_FLOAT | FLOAT | float |
MYSQL_TYPE_DOUBLE | DOUBLE | double |
MYSQL_TYPE_TIME | TIME | MYSQL_TIME |
MYSQL_TYPE_DATE | DATE | MYSQL_TIME |
MYSQL_TYPE_DATETIME | DATETIME | MYSQL_TIME |
MYSQL_TYPE_TIMESTAMP | TIMESTAMP | MYSQL_TIME |
MYSQL_TYPE_STRING | CHAR | |
MYSQL_TYPE_VAR_STRING | VARCHAR | |
MYSQL_TYPE_TINY_BLOB | TINYBLOB/TINYTEXT | |
MYSQL_TYPE_BLOB | BLOB/TEXT | |
MYSQL_TYPE_MEDIUM_BLOB | MEDIUMBLOB/MEDIUMTEXT | |
MYSQL_TYPE_LONG_BLOB | LONGBLOB/LONGTEXT |
void *buffer
對(duì)于輸入揭厚,這是指向存儲(chǔ)語句參數(shù)數(shù)據(jù)值的緩沖的指針。對(duì)于輸出寻馏,它是指向返回結(jié)果集列值的緩沖的指針棋弥。
unsigned long buffer_length
*buffer的實(shí)際大小,單位為字節(jié)诚欠。
unsigned long *length
指向unsigned long變量的指針顽染,該變量指明了存儲(chǔ)在*buffer中數(shù)據(jù)的實(shí)際字節(jié)數(shù)漾岳。
my_bool *is_null
該成員指向my_bool
變量,如果值為NULL粉寞,該變量為“真”尼荆,如果值為非Null,該變量為“假”唧垦。
my_bool is_unsigned
該成員用于整數(shù)類型捅儒。
MYSQL_TIME結(jié)構(gòu):
unsigned int year
年份
unsigned int month
月份
unsigned int day
天
unsigned int hour
小時(shí)
unsigned int minute
分鐘
unsigned int second
秒
my_bool neg
布爾標(biāo)志,用于指明時(shí)間是否為負(fù)數(shù)振亮。
unsigned long second_part
秒的分?jǐn)?shù)部分巧还。該成員目前不使用。
C API 預(yù)處理語句函數(shù)
函數(shù) | 描述 |
---|---|
mysql_stmt_affected_rows() | 返回由預(yù)處理語句UPDATE坊秸、DELETE或INSERT變更麸祷、刪除或插入的行數(shù)目。 |
mysql_stmt_attr_get() | 獲取預(yù)處理語句屬性的值褒搔。 |
mysql_stmt_attr_set() | 設(shè)置預(yù)處理語句的屬性阶牍。 |
mysql_stmt_bind_param() | 將應(yīng)用程序數(shù)據(jù)緩沖與預(yù)處理SQL語句中的參數(shù)標(biāo)記符關(guān)聯(lián)起來。 |
mysql_stmt_bind_result() | 將應(yīng)用程序數(shù)據(jù)緩沖與結(jié)果集中的列關(guān)聯(lián)起來星瘾。 |
mysql_stmt_close() | 釋放預(yù)處理語句使用的內(nèi)存走孽。 |
mysql_stmt_data_seek() | 尋找語句結(jié)果集中的任意行編號(hào)。 |
mysql_stmt_errno() | 返回上次語句執(zhí)行的錯(cuò)誤編號(hào)琳状。 |
mysql_stmt_error() | 返回上次語句執(zhí)行的錯(cuò)誤消息磕瓷。 |
mysql_stmt_execute() | 執(zhí)行預(yù)處理語句。 |
mysql_stmt_fetch() | 從結(jié)果集獲取數(shù)據(jù)的下一行算撮,并返回所有綁定列的數(shù)據(jù)生宛。 |
mysql_stmt_fetch_column() | 獲取結(jié)果集當(dāng)前行中某列的數(shù)據(jù)。 |
mysql_stmt_field_count() | 對(duì)于最近的語句肮柜,返回結(jié)果行的數(shù)目。 |
mysql_stmt_free_result() | 釋放分配給語句句柄的資源倒彰。 |
mysql_stmt_init() | 為MYSQL_STMT結(jié)構(gòu)分配內(nèi)存并初始化它审洞。 |
mysql_stmt_insert_id() | 對(duì)于預(yù)處理語句的AUTO_INCREMENT列,返回生成的ID待讳。 |
mysql_stmt_num_rows() | 從語句緩沖結(jié)果集返回總行數(shù)芒澜。 |
mysql_stmt_param_count() | 返回預(yù)處理SQL語句中的參數(shù)數(shù)目。 |
mysql_stmt_param_metadata() | 返回結(jié)果集的參數(shù)元數(shù)據(jù)创淡。 |
mysql_stmt_prepare() | 為執(zhí)行操作準(zhǔn)備SQL字符串痴晦。 |
mysql_stmt_reset() | 復(fù)位服務(wù)器中的語句緩沖區(qū)。 |
mysql_stmt_result_metadata() | 以結(jié)果集形式返回預(yù)處理語句元數(shù)據(jù)琳彩。 |
mysql_stmt_row_seek() | 使用從mysql_stmt_row_tell()返回的值誊酌,查找語句結(jié)果集中的行偏移部凑。 |
mysql_stmt_row_tell() | 返回語句行光標(biāo)位置。 |
mysql_stmt_send_long_data() | 將程序塊中的長(zhǎng)數(shù)據(jù)發(fā)送到服務(wù)器碧浊。 |
mysql_stmt_sqlstate() | 返回關(guān)于上次語句執(zhí)行的SQLSTATE錯(cuò)誤代碼涂邀。 |
mysql_stmt_store_result() | 將完整的結(jié)果集檢索到客戶端。 |
調(diào)用mysql_stmt_init()以創(chuàng)建語句句柄箱锐,然后調(diào)用mysql_stmt_prepare
準(zhǔn)備語句比勉,調(diào)用mysql_stmt_bind_param()提供參數(shù)數(shù)據(jù),并調(diào)用mysql_stmt_execute()執(zhí)行語句驹止。通過更改mysql_stmt_bind_param()提供的相應(yīng)緩沖區(qū)中的參數(shù)值浩聋,可重復(fù)執(zhí)行mysql_stmt_execute()。
mysql_stmt_store_result()
與mysql_stmt_result_metadata()
的區(qū)別:一個(gè)是獲取全部結(jié)果集臊恋,一個(gè)是獲取結(jié)果集元數(shù)據(jù)衣洁。