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ù)文件,如果沒(méi)有安裝,也可以在網(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"); /*這句話(huà)是設(shè)置查詢(xún)編碼為utf8,這樣支持中文*/ mysql_query(&my_connection, "set names utf8"); /*下面這句話(huà)就是用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ǔ)句,并打印出查詢(xún)結(jié)果*/ void query_sql(char* sql) { MYSQL my_connection; /*這是一個(gè)數(shù)據(jù)庫(kù)連接*/ int res; /*執(zhí)行sql語(yǔ)句后的返回標(biāo)志*/ MYSQL_RES *res_ptr; /*指向查詢(xún)結(jié)果的指針*/ MYSQL_FIELD *field; /*字段結(jié)構(gòu)指針*/ MYSQL_ROW result_row; /*按行返回的查詢(xún)信息*/ int row, column; /*查詢(xún)返回的行數(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ù)查詢(xún)query_sql連接成功!\n"); /*這句話(huà)是設(shè)置查詢(xún)編碼為utf8,這樣支持中文*/ mysql_query(&my_connection, "set names utf8"); *下面這句話(huà)就是用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í)行成功了*/ /*將查詢(xún)的結(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("查詢(xún)到 %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è)試下查詢(xún)*/ query="select * from student;"; query_sql(query); return 0; }
相關(guān)文章
Qt+Quick實(shí)現(xiàn)圖片演示器的開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了Qt如何利用Quick實(shí)現(xiàn)圖片演示器的開(kāi)發(fā),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下2023-01-01C++實(shí)現(xiàn)簡(jiǎn)單學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03win32 api實(shí)現(xiàn)簡(jiǎn)單的消息窗口示例
這篇文章主要介紹了使用win32 api實(shí)現(xiàn)簡(jiǎn)單的消息窗口示例,需要的朋友可以參考下2014-03-03SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
這篇文章主要介紹了使用SublimeText編譯C代碼的開(kāi)發(fā)環(huán)境設(shè)置,大家參考使用2013-11-11cmake跨平臺(tái)構(gòu)建工具的學(xué)習(xí)筆記
CMake是一個(gè)跨平臺(tái)的安裝/編譯工具,通過(guò)CMake我們可以通過(guò)簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝/編譯過(guò)程,下面這篇文章主要給大家介紹了關(guān)于cmake跨平臺(tái)構(gòu)建工具的相關(guān)資料,需要的朋友可以參考下2023-02-02