欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語(yǔ)言連接mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

 更新時(shí)間:2012年05月05日 00:59:00   投稿:mdxy-dxy  
C語(yǔ)言連接mysql數(shù)據(jù)庫(kù),需要相應(yīng)的頭文件和lib文件,如果你安裝Mysql數(shù)據(jù)庫(kù),會(huì)在安裝目錄下找到這些庫(kù)文件,如果沒有安裝,也可以在網(wǎng)上找到

我這里也有一份網(wǎng)上找到的:/201205/other/C_link_mySql51.rar
C連接MySql5.1所需文件.rar
附帶一個(gè)不錯(cuò)的例子:

#include <string.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <winsock2.h> 
#include <mysql/mysql.h>/*注意要包含這個(gè)頭文件*/ 
#pragma comment(lib,"libmysql") 
/*定義了一些數(shù)據(jù)庫(kù)連接需要的宏*/ 
#define HOST "localhost" 
#define USERNAME "root" 
#define PASSWORD "123456" 
#define DATABASE "test" 
/*這個(gè)函數(shù)用來(lái)執(zhí)行傳入的sql語(yǔ)句*/ 
void exe_sql(char* sql) { 
MYSQL my_connection; /*這是一個(gè)數(shù)據(jù)庫(kù)連接*/ 
int res; /*執(zhí)行sql語(yǔ)句后的返回標(biāo)志*/ 
/*初始化mysql連接my_connection*/ 
mysql_init(&my_connection); 
/*這里就是用了mysql.h里的一個(gè)函數(shù),用我們之前定義的那些宏建立mysql連接,并 
返回一個(gè)值,返回不為空證明連接是成功的*/ 
if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, 
DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*連接成功*/ 
printf("數(shù)據(jù)庫(kù)執(zhí)行exe_sql連接成功!n"); 
/*這句話是設(shè)置查詢編碼為utf8,這樣支持中文*/ 
mysql_query(&my_connection, "set names utf8"); 
/*下面這句話就是用mysql_query函數(shù)來(lái)執(zhí)行我們剛剛傳入的sql語(yǔ)句, 
這會(huì)返回一個(gè)int值,如果為0,證明語(yǔ)句執(zhí)行成功*/ 
res = mysql_query(&my_connection, sql); 
if (res) {/*現(xiàn)在就代表執(zhí)行失敗了*/ 
printf("Error: mysql_query !\n"); 
/*不要忘了關(guān)閉連接*/ 
mysql_close(&my_connection); 
} else {/*現(xiàn)在就代表執(zhí)行成功了*/ 
/*mysql_affected_rows會(huì)返回執(zhí)行sql后影響的行數(shù)*/ 
printf("%d 行受到影響!\n", 
mysql_affected_rows(&my_connection)); 
/*不要忘了關(guān)閉連接*/ 
mysql_close(&my_connection); 
} 
} else { 
/*數(shù)據(jù)庫(kù)連接失敗*/ 
printf("數(shù)據(jù)庫(kù)執(zhí)行exe_sql連接失??!\n"); 
} 
} 
/*這個(gè)函數(shù)用來(lái)執(zhí)行傳入的sql語(yǔ)句,并打印出查詢結(jié)果*/ 
void query_sql(char* sql) { 
MYSQL my_connection; /*這是一個(gè)數(shù)據(jù)庫(kù)連接*/ 
int res; /*執(zhí)行sql語(yǔ)句后的返回標(biāo)志*/ 
MYSQL_RES *res_ptr; /*指向查詢結(jié)果的指針*/ 
MYSQL_FIELD *field; /*字段結(jié)構(gòu)指針*/ 
MYSQL_ROW result_row; /*按行返回的查詢信息*/ 
int row, column; /*查詢返回的行數(shù)和列數(shù)*/ 
int i, j; /*只是控制循環(huán)的兩個(gè)變量*/ 
/*初始化mysql連接my_connection*/ 
mysql_init(&my_connection); 
/*這里就是用了mysql.h里的一個(gè)函數(shù),用我們之前定義的那些宏建立mysql連接,并 
返回一個(gè)值,返回不為空證明連接是成功的*/ 
if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, 
DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*連接成功*/ 
printf("數(shù)據(jù)庫(kù)查詢query_sql連接成功!\n"); 
/*這句話是設(shè)置查詢編碼為utf8,這樣支持中文*/ 
mysql_query(&my_connection, "set names utf8"); 
*下面這句話就是用mysql_query函數(shù)來(lái)執(zhí)行我們剛剛傳入的sql語(yǔ)句, 
這會(huì)返回一個(gè)int值,如果為0,證明語(yǔ)句執(zhí)行成功*/ 
res = mysql_query(&my_connection, sql); 
if (res) { /*現(xiàn)在就代表執(zhí)行失敗了*/ 
printf("Error: mysql_query !\n"); 
/*不要忘了關(guān)閉連接*/ 
mysql_close(&my_connection); 
} else { /*現(xiàn)在就代表執(zhí)行成功了*/ 
/*將查詢的結(jié)果給res_ptr*/ 
res_ptr = mysql_store_result(&my_connection); 
/*如果結(jié)果不為空,就把結(jié)果print*/ 
if (res_ptr) { 
/*取得結(jié)果的行數(shù)和*/ 
column = mysql_num_fields(res_ptr); 
row = mysql_num_rows(res_ptr) + 1; 
printf("查詢到 %lu 行 \n", row); 
/*輸出結(jié)果的字段名*/ 
for (i = 0; field = mysql_fetch_field(res_ptr); i++) 
printf("%st", field->name); 
printf("\n"); 
/*按行輸出結(jié)果*/ 
for (i = 1; i < row; i++) { 
result_row = mysql_fetch_row(res_ptr); 
for (j = 0; j < column; j++) 
printf("%st", result_row[j]); 
printf("\n"); 
} 
} 
/*不要忘了關(guān)閉連接*/ 
mysql_close(&my_connection); 
} 
} 
} 
int main(int argc, char *argv[]) { 
/*測(cè)試下向里面插入數(shù)據(jù)*/ 
char *query; 
char *exe = "insert into student values('lala','hahhahah!');"; 
exe_sql(exe); 
*測(cè)試下查詢*/ 
query="select * from student;"; 
query_sql(query); 
return 0; 
} 

相關(guān)文章

  • C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語(yǔ)言結(jié)構(gòu)體版學(xué)生成績(jī)管理系統(tǒng)

    C語(yǔ)言結(jié)構(gòu)體版學(xué)生成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言結(jié)構(gòu)體版的學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++制作《游戲內(nèi)存外掛》詳解

    C++制作《游戲內(nèi)存外掛》詳解

    這篇文章主要介紹了C++制作《游戲內(nèi)存外掛》詳解,文中通過(guò)示例代碼和圖片介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C++ UML類圖的使用解讀

    C++ UML類圖的使用解讀

    這篇文章主要介紹了C++ UML類圖的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • [c++]變量聲明與定義的規(guī)則詳解

    [c++]變量聲明與定義的規(guī)則詳解

    這篇文章主要介紹了[c++]變量聲明與定義的規(guī)則詳解,對(duì)于學(xué)習(xí)c++的朋友來(lái)說(shuō)這是一個(gè)很細(xì)膩的文章,代碼完整,需要的朋友可以參考下
    2021-04-04
  • C語(yǔ)言深入淺出分析函數(shù)指針

    C語(yǔ)言深入淺出分析函數(shù)指針

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言進(jìn)階教程之函數(shù)指針的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • C++實(shí)現(xiàn)LeetCode(174.地牢游戲)

    C++實(shí)現(xiàn)LeetCode(174.地牢游戲)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(174.地牢游戲),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++如何向Lambda傳遞參數(shù)與捕獲

    C++如何向Lambda傳遞參數(shù)與捕獲

    文章介紹了C++中向Lambda表達(dá)式傳遞參數(shù)和使用捕獲列表的基本規(guī)則和示例,參數(shù)傳遞要求嚴(yán)格匹配類型和數(shù)量,而捕獲列表允許Lambda訪問(wèn)外部變量,并可以按值或引用捕獲,文章還討論了捕獲的陷阱和解決方案,以及參數(shù)傳遞與捕獲列表的區(qū)別和應(yīng)用場(chǎng)景,感興趣的朋友一起看看吧
    2025-03-03
  • C++ 初始化列表詳解及實(shí)例代碼

    C++ 初始化列表詳解及實(shí)例代碼

    這篇文章主要介紹了C++ 初始化列表詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Qt 中開啟線程的多種方式小結(jié)

    Qt 中開啟線程的多種方式小結(jié)

    本篇文章就來(lái)整理一下 Qt 中使用線程的五種方式,方便后期回顧。前面兩種比較簡(jiǎn)單,一筆帶過(guò)了,主要介紹后面三種,感興趣的朋友跟隨小編一起看看吧
    2021-09-09

最新評(píng)論