本文目錄一覽:
c語言讀取mysql庫中的數據的程序頭文件怎麼設置
Mysql C API編程步驟
1、首先我們要包含mysql的頭文件,並鏈接mysql動態庫。即添加以下語句:
#include WinSock2.h // 進行網路編程需要winsock2.h
#include mysql.h
#pragma comment(lib, 「libmysql.lib」)
2、創建MYSQL變數。如:
MYSQL mysql;
3、初始化MYSQL變數。
mysql_init(mysql);
4、調用mysql_real_connect函數連接Mysql資料庫。mysql_real_connect函數的原型如下:
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
參數說明:mysql–前面定義的MYSQL變數;host–MYSQL伺服器的地址;user–登錄用戶名;passwd–登錄密碼;db–要連接的資料庫;port–MYSQL伺服器的TCP服務埠;unix_socket–unix連接方式,為NULL時表示不使用socket或管道機制;clientflag–Mysql運行為ODBC資料庫的標記,一般取0。連接失敗時該函數返回0。
5、調用mysql_real_query函數進行資料庫查詢。mysql_real_query函數的原型如下:
int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);
參數說明:mysql–前面定義的MYSQL變數;q–SQL查詢語句;length–查詢語句的長度。
查詢成功則該函數返回0。
6、通過調用mysql_store_result或mysql_use_result函數返回的MYSQL_RES變數獲取查詢結果數據。
兩個函數的原型分別為:
MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);
MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);
這兩個函數分別代表了獲取查詢結果的兩種方式。第一種,調用mysql_store_result函數將從Mysql伺服器查詢的所有數據都存儲到客戶端,然後讀取;第二種,調用mysql_use_result初始化檢索,以便於後面一行一行的讀取結果集,而它本身並沒有從伺服器讀取任何數據,這種方式較之第一種速度更快且所需內存更少,但它會綁定伺服器,阻止其他線程更新任何錶,而且必須重複執行mysql_fetch_row讀取數據,直至返回NULL,否則未讀取的行會在下一次查詢時作為結果的一部分返回,故經常我們使用mysql_store_result。
7、調用mysql_fetch_row函數讀取結果集數據。
上述兩種方式最後都是重複調用mysql_fetch_row函數讀取數據。mysql_fetch_row函數的原型如下:
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
參數result就是mysql_store_result或mysql_use_result的返回值。
該函數返回MYSQL_ROW型的變數,即字元串數組,假設為row,則row〔i〕為第i個欄位的值。當到結果集尾部時,此函數返回NULL。
8、結果集用完後,調用mysql_free_result函數釋放結果集,以防內存泄露。mysql_free_result函數的原型如下:
void STDCALL mysql_free_result(MYSQL_RES *result);
9、不再查詢Mysql資料庫時,調用mysql_close函數關閉資料庫連接。mysql_close函數的原型為:
void STDCALL mysql_close(MYSQL *sock);
如何用c語言與mysql 連接
mysql是有c語言介面的,安裝相應庫後就可以鏈接了,一般連接mysql的函數是mysql_connect或者mysql_real_connect(大概就是這麼拼的吧。。。)可以使用mysql_query執行sql語句
c語言調用資料庫mysql5.6,數據查詢後怎樣讀取
讀取出來的 char 字元么。
atoi 一下 不就變成int了么。
你這個屬於存練習 代碼. 邏輯比較混亂. 慢慢來吧.
我寫過的用 vector 和 map 做的 mysql讀取的結果集的封裝 你可以看看.
用C語言如何對MySQL資料庫進行操作
有時為了性能,我們會直接用C語言來開發相關的模塊,尤其在我們的web應用中,雖然PHP、JSP等腳本均提供了MySQL的介面,但是顯然直接使用C語言具有更好的安全性和性能,Michael以前用PHP開發的多個項目中就使用了C語言編寫的這類介面,然後再編譯到php裡面,供php腳本直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連接MySQL資料庫,並且讀取裡面的數據返回,同時如何進行編譯。if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯#includewindows.h#endif#includestdio.h#includestdlib.h#includemysql.h我的機器上該文件在/usr/local/include/mysql下定義MySQL資料庫操作的宏,也可以不定義留著後面直接寫進代碼defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,char**argv)char**argv相當於char*argv[]{MYSQL mysql,*sock;定義資料庫連接的句柄,它被用於幾乎所有的MySQL函數MYSQL_RES *res;查詢結果集,結構類型MYSQL_FIELD *fd ;包含欄位信息的結構MYSQL_ROW row ;存放一行查詢結果的字元串數組char qbuf[160];存放查詢sql語句字元串if(argc!=2){//檢查輸入參數fprintf(stderr,usage:mysql_selectuserid\n\n);exit(1);}mysql_init(mysql);if(!(sock=mysql_real_connect(mysql,localhost,dbuser,dbpwd,9tmd_bbs_utf8,0,NULL,0))){fprintf(stderr,Couldn’tconnecttoengine!\n%s\n\n,mysql_error(mysql));perror();exit(1);}sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));if(mysql_query(sock,qbuf)){fprintf(stderr,Queryfailed(%s)\n,mysql_error(sock));exit(1);}if(!(res=mysql_store_result(sock))){fprintf(stderr,Couldn’tgetresultfrom%s\n,mysql_error(sock));exit(1);}printf(numberoffieldsreturned:%d\n,mysql_num_fields(res));while(row=mysql_fetch_row(res)){printf(Theruserid#%d’susernameis:%s\n,atoi(argv[1]),(((row[0]==NULL)(!strlen(row[0])))?NULL:row[0]));puts(queryok!\n);}mysql_free_result(res);mysql_close(sock);exit(0);return0;為了兼容大部分的編譯器加入此行}編譯的時候,使用下面的命令gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令./mysql_select 1將返回如下結果:numberoffieldsreturned:1Theruserid#1’susernameis:Michaelqueryok!上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔源碼天空,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/302896.html