c語言用函數(shù)訪問數(shù)據(jù)庫 c++訪問數(shù)據(jù)庫的方法

c語言讀取mysql庫中的數(shù)據(jù)的程序頭文件怎么設置

Mysql C API編程步驟

成都創(chuàng)新互聯(lián)公司主營新鄭網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶App定制開發(fā),新鄭h5小程序開發(fā)搭建,新鄭網(wǎng)站營銷推廣歡迎新鄭等地區(qū)企業(yè)咨詢

1、首先我們要包含mysql的頭文件,并鏈接mysql動態(tài)庫。即添加以下語句:

#include WinSock2.h // 進行網(wǎng)絡編程需要winsock2.h

#include mysql.h

#pragma comment(lib, “l(fā)ibmysql.lib”)

2、創(chuàng)建MYSQL變量。如:

MYSQL mysql;

3、初始化MYSQL變量。

mysql_init(mysql);

4、調用mysql_real_connect函數(shù)連接Mysql數(shù)據(jù)庫。mysql_real_connect函數(shù)的原型如下:

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);

參數(shù)說明:mysql–前面定義的MYSQL變量;host–MYSQL服務器的地址;user–登錄用戶名;passwd–登錄密碼;db–要連接的數(shù)據(jù)庫;port–MYSQL服務器的TCP服務端口;unix_socket–unix連接方式,為NULL時表示不使用socket或管道機制;clientflag–Mysql運行為ODBC數(shù)據(jù)庫的標記,一般取0。連接失敗時該函數(shù)返回0。

5、調用mysql_real_query函數(shù)進行數(shù)據(jù)庫查詢。mysql_real_query函數(shù)的原型如下:

int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);

參數(shù)說明:mysql–前面定義的MYSQL變量;q–SQL查詢語句;length–查詢語句的長度。

查詢成功則該函數(shù)返回0。

6、通過調用mysql_store_result或mysql_use_result函數(shù)返回的MYSQL_RES變量獲取查詢結果數(shù)據(jù)。

兩個函數(shù)的原型分別為:

MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);

MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);

這兩個函數(shù)分別代表了獲取查詢結果的兩種方式。第一種,調用mysql_store_result函數(shù)將從Mysql服務器查詢的所有數(shù)據(jù)都存儲到客戶端,然后讀取;第二種,調用mysql_use_result初始化檢索,以便于后面一行一行的讀取結果集,而它本身并沒有從服務器讀取任何數(shù)據(jù),這種方式較之第一種速度更快且所需內(nèi)存更少,但它會綁定服務器,阻止其他線程更新任何表,而且必須重復執(zhí)行mysql_fetch_row讀取數(shù)據(jù),直至返回NULL,否則未讀取的行會在下一次查詢時作為結果的一部分返回,故經(jīng)常我們使用mysql_store_result。

7、調用mysql_fetch_row函數(shù)讀取結果集數(shù)據(jù)。

上述兩種方式最后都是重復調用mysql_fetch_row函數(shù)讀取數(shù)據(jù)。mysql_fetch_row函數(shù)的原型如下:

MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);

參數(shù)result就是mysql_store_result或mysql_use_result的返回值。

該函數(shù)返回MYSQL_ROW型的變量,即字符串數(shù)組,假設為row,則row〔i〕為第i個字段的值。當?shù)浇Y果集尾部時,此函數(shù)返回NULL。

8、結果集用完后,調用mysql_free_result函數(shù)釋放結果集,以防內(nèi)存泄露。mysql_free_result函數(shù)的原型如下:

void STDCALL mysql_free_result(MYSQL_RES *result);

9、不再查詢Mysql數(shù)據(jù)庫時,調用mysql_close函數(shù)關閉數(shù)據(jù)庫連接。mysql_close函數(shù)的原型為:

void STDCALL mysql_close(MYSQL *sock);

ubuntu下用C語言訪問數(shù)據(jù)庫出現(xiàn)‘mysql_init’未定義的引用的錯誤

只要libmysqlclient.so在/usr/lib/mysql 中,-L/usr/lib/mysql -lmysqlclient 就是link libmysqlclient.so

所以,你應該找一下libmysqlclient.so的安裝位置,比如安裝在/usr/lib/i386-linux-gnu

鏈接libmysqlclient.so,就是-L/usr/lib/i386-linux-gnu -lmysqlclient

另外,這種編譯出現(xiàn)的問題,請貼出具體的輸出,不要泛泛的講。泛泛的講別人根本不明白是那里出了問題。。。

在linux系統(tǒng)下,用C語言庫函數(shù)對文件進行訪問。在線等答案。懸賞50財富值,感謝各位!

#include?stdio.h

#include?string.h

#include?sys/types.h

#include?sys/stat.h

#include?fcntl.h

int?main(){

int?fd,count;

char?buffer[1000];????//開辟一塊內(nèi)存,臨時存放讀取到的內(nèi)容

memset(buffer,0,1000);//先清空,全部置零

fd=open("char.txt",O_RDWR);//打開文件char.txt,并返回文件描述符fd

while((count=read(fd,buffer,1000))!=0){//一直讀,直到文件尾

printf("%s\ncount=%d\n",buffer,count);//打印內(nèi)容及字節(jié)總量

}

close(fd);//別忘了關文件句柄

return?0;

}

經(jīng)編譯連接,輸出結果沒問題

為了簡潔明了,沒有寫錯誤判斷以免影響新手抓重點

有任何問題歡迎追問

求賞

C語言訪問SQLite數(shù)據(jù)庫報錯

我用sqlite3.7.10都沒有任何問題,不過我沒試過樓主直接用dos的這個方法。

另外就是自己做的lib文件要放倒lib文件夾里,sqlite3.dll文件要放到system32文件夾里,64位操作系統(tǒng)要放到syswow64文件夾里,這里要注意并不是每個版本的sqlite3.dll文件都適合自己的機器,我也是試了好多次才成功。

不知道能不能幫到你,剛才是我的全部理解了。

linux系統(tǒng)下c語言連接mysql數(shù)據(jù)庫時有關mysql_error這個函數(shù)的返回值的問題,求知情人士

應該這樣用,連接的時候不要指定數(shù)據(jù)庫,分步操作和檢測

if(!mysql_real_connect(character_ptr,"localhost","root","24157518",

NULL

,0,NULL,0))

printf("Error

connecting

to

server:

%s\n",

mysql_error(character_ptr));

if(!mysql_select_db(character_ptr,

"test_database"))

printf("Error

connecting

to

database:

%s\n",

mysql_error(character_ptr));

名稱欄目:c語言用函數(shù)訪問數(shù)據(jù)庫 c++訪問數(shù)據(jù)庫的方法
分享網(wǎng)址:http://muchs.cn/article36/doccdsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作搜索引擎優(yōu)化、網(wǎng)站營銷、品牌網(wǎng)站設計、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計