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