c 调用mysql密码为空_C语言连MySQL - osc_srnunz15的个人空间 - OSCHINA - 中文开源技术交流社区...
連接例程
用C語言連接MySQL數(shù)據(jù)庫包含兩個步驟“
初始化一個連接句柄結(jié)構(gòu);
實(shí)際進(jìn)行連接。
初始化連接句柄
#include
MYSQL *mysql_init(MYSQL *);
通常傳遞NULL給這個例程,它會返回一個指向新分配的連接句柄結(jié)構(gòu)的指針。
如果傳遞一個已有的結(jié)構(gòu),它將被重新初始化。
出錯返回NULL。
連接
MYSQL *mysql_real_connect(MYSQL *connection,
const char *server_host,
const char *sql_user_name,
const char *sql_password,
const char *db_name,
unsigned int port_number,
const char *unix_socket_name,
unsigned int flags);
指針connection必須指向已經(jīng)被mysql_init初始化過的結(jié)構(gòu)。
server_host既可以是主機(jī)名,也可以是IP地址。如果是連接到本地,可以通過指定localhost來優(yōu)化連接類型。
sql_user_name和sql_password,用戶名和密碼。
port_number和unix_socket_name應(yīng)該分別為0和NULL,除非改變了MySQL安裝的默認(rèn)設(shè)置。
flag參數(shù)用來對一些定義的位模式進(jìn)行OR操作,使得改變使用協(xié)議的某些特性。0。
如果無法連接,它將返回NULL。
關(guān)閉連接
void mysql_close(MYSQL *connection);
設(shè)置選項(xiàng)
int mysql_options(MYSQL *connection ,enum option_to_set,const char *argument);
一次只能設(shè)置一個選項(xiàng),所以每設(shè)置一個選項(xiàng)就得調(diào)用它一次。
成功返回0。
僅能在mysql_init和mysql_real_connect之間調(diào)用。
并不是所有的選項(xiàng)都是char類型,因此它們必須被轉(zhuǎn)換為const char *。
enum選項(xiàng)
實(shí)際參數(shù)類型
說明
MySQL_OPT_CONNECT_TIMEOUT
const unsigned int *
連接超時之前的等待秒數(shù)
MySQL_OPT_COMPRESS
None,使用NULL
網(wǎng)絡(luò)連接中使用壓縮機(jī)制
MySQL_OPT_COMMAND
const char *
每次連接建立后發(fā)送的命令
設(shè)置連接超時時間為7秒 unsigned int timeout = 7;
...
connection = mysql_init(NULL);
mysql_options(connection,MYSQL_OPT_CONNECT_TIMEOUT,(const char *)&timeout);
connection = mysql_real_connect(connection...
錯誤處理
unsigned int mysql_errno(MYSQL *connection);
char *mysql_error(MYSQL *connection);
mysql_errno的返回值實(shí)際上是錯誤碼。
mysql_error的返回值是文本錯誤信息。
執(zhí)行SQL語句
int mysql_query(MYSQL *connection,const char *query);
接受連接結(jié)構(gòu)指針二號文本字符串形式的有效SQL語句(沒有結(jié)束的分號)。
受影響的行數(shù)(UPDATE,INSERT或DELETE)
my_ulonglong mysql_affected_rows(MYSQL *connection);
返回受之前執(zhí)行的UPDATE,INSERT或DELETE查詢影響的行數(shù)。
返回數(shù)據(jù)的語句(SELECT)
一次提取所有數(shù)據(jù)
MYSQL_RES *mysql_store_result(MYSQL *connection);
在mysql_store_result調(diào)用成功之后,調(diào)用mysql_num_rows來得到返回記錄的數(shù)目。
my_ulonglong mysql_num_rows(MYSQL_RES *result);
從使用mysql_store_result得到的結(jié)果結(jié)構(gòu)中提取一行,并把它放到一個行結(jié)構(gòu)中。
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
這個函數(shù)用來在結(jié)果集中進(jìn)行跳轉(zhuǎn),設(shè)置將會被下一個mysql_fetch_row操作返回的行。參數(shù)offset的值是一個行號,0是第一行。
void mysql_data_seek(MYSQL_RES *result,my_ulonglong offset);
mysql_row_tell返回一個偏移值,用來表示結(jié)果集中的當(dāng)前位置,它不是行號,不能用于mysql_data_seek.
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result);
完成了對數(shù)據(jù)的所有操作后,必須明確的調(diào)用mysql_free_result來讓MySQL庫完成善后處理
void mysql_free_result(MYSQL_RES *result);
一次提取一行數(shù)據(jù)
MYSQL_RES *mysql_use_result(MYSQL *connection);
處理返回的數(shù)據(jù)
unsigned int mysql_field_count(MYSQL *connection);
它接受連接對象,并返回結(jié)果集中的字段(列)數(shù)目。
簡單的打印數(shù)據(jù)的代碼:
void display_row(){
unsigned int field_count;
field_count = 0;
while(field_count < mysql_field_count(&my_connection)){
printf("%s",sqlrow[field_count]);
field_count++;
}
printf("\n");
}
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);
將元數(shù)據(jù)和數(shù)據(jù)提取到一個新的結(jié)構(gòu)中
MySQL_FIELD結(jié)構(gòu)中的成員
說明
char *name;
列名,字符串
char *table;
列所屬的表名
unsigned int flags;
NOT NULL FLAG、PRI KEY FLAG、UNSIGNED FLAG. AUTO_ INCREMENT_FLAC和BINARY_ FLAG
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的c 调用mysql密码为空_C语言连MySQL - osc_srnunz15的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 判断客户端_javaweb服务
- 下一篇: mysql insert 二进制_MYS