c語言呼叫Mysql資料庫

2021-07-24 18:34:23 字數 3249 閱讀 1745

一、mysql資料庫的c語言常用介面api

1)初始化mysql控制代碼

mysql *pconn;

pconn = mysql_init(null);

2)連線資料庫

if(!mysql_real_connect(pconn,"localhost","root","root","test",0,null,0))

3)運算元據庫

//第1個引數為資料庫控制代碼,第2個引數為運算元據庫語句

mysql_query(pconn,"set names gbk");//防止亂碼。設定和資料庫的編碼一致就不會亂碼

//mysql_real_query比mysql_query多了個引數: 字串query的長度, 所以適合有二進位制資料的query, 而mysql_query的字串query不能包含二進位制,因為它以\0為結尾

if(mysql_query(pconn,"select * from persons"))

//mysql_res *mysql_store_result(mysql *connection): 是把查詢結果一次性取到客戶端的離線資料集,當結果比較大時耗記憶體。

//mysql_use_result則是查詢結果放在伺服器上,客戶端通過指標逐行讀取,節省客戶端記憶體。但是乙個mysql*連線同時只能有乙個未關閉的mysql_use_result查詢

// 這個函式接受由mysql_store_result返回的結果結構集,並返回結構集中的行數 my_ulonglong mysql_num_rows(mysql_res *result);

// 這個函式從使用mysql_store_result得到的結果結構中提取一行,並把它放到乙個行結構中。當資料用完或發生錯誤時返回null.

mysql_row mysql_fetch_row(mysql_res *resutl);

// 這個函式接受由mysql_store_result返回的結果結構集,並返回結構集中的行數 my_ulonglong mysql_num_rows(mysql_res *result);

// 返回結果集中的字段(列)數目 unsigned int mysql_field_count(mysql *connection); 

// 這個函式用來覆蓋當前的字段編號,該編號會隨著每次mysql_fetch_field呼叫而自動增加。如果給offset傳遞0,那麼將跳回第1列

mysql_field_offset mysql_field_seek(mysql *result, mysql_field_offset offset);

//返回資料庫中變更的行數:mysql_affected_rows(mysql *);

//返回乙個偏移值,它用來表示結果集中的當前位置。它不是行號,mysql_row_offset mysql_row_tell(mysql_res *result); 

// 這將在結果集中移動當前的位置,並返回之前的位置 mysql_row_offset mysql_row_seek(mysql_res *result, mysql_row_offset offset);

4)別忘了free和close

mysql_free_result(result); //釋放查詢結果集,

mysql_close(pconn);       //關閉連線

使用**

#include

#include

#include

#include "mysql.h"

#include "errmsg.h"

#include "mysqld_error.h"

mysql conn;

mysql_res *res_ptr;

mysql_row sqlrow;

void connection(const

char* host, const

char* user, const

char* password, const

char* database)

mysql_init(&conn); // 注意取位址符&

if (mysql_real_connect(&conn, host, user, password, database, 0, null, 0))

printf("connection success!\n");

else

fprintf(stderr, "connection failed!\n");

if (mysql_errno(&conn))

fprintf(stderr, "connection error %d: %s\n", mysql_errno(&conn), mysql_error(&conn));       //錯誤編號,錯誤資訊

exit(exit_failure);

void display_row()

unsigned

int field_count = mysql_field_count(&conn);

int i = 0;

while (i < field_count)

if (sqlrow[i])

printf("%s ", sqlrow[i]);

else

printf("null"); i++;

printf("\n");

int main (int argc, char *argv)

connection("localhost", "root", "shuang", "shuangde");

int res = mysql_query(&conn, "select * from student");

if (res)

fprintf(stderr, "select error: %s\n", mysql_error(&conn));

else

res_ptr = mysql_use_result(&conn);

if (res_ptr)

int first = 1;

while ((sqlrow = mysql_fetch_row(res_ptr)))

display_row();

if (mysql_errno(&conn))

fprintf(stderr, "retrive error: %s\n", mysql_error(&conn));

mysql_free_result(res_ptr);

mysql_close(&conn);

exit(exit_success);

}

C語言連線MySQL資料庫

不想用odbc什麼的連線資料庫,想直接用mysql提供的介面連線資料庫。我用的是vs2005。網上的一些介紹都是修改專案屬性等的設定,我不喜歡那樣。首先 我們需要的檔案有mysql.h my alloc.h my list.h mysql com.h mysql time.h mysql versi...

C語言連線mysql資料庫

一 分配或初始化與mysql real connect 相適應的mysql物件。用mysql init 函式。mysql mysql init mysql mysql 描述 分配或初始化與mysql real connect 相適應的mysql物件。如果mysql是null指標,該函式將分配 初始化...

C語言鏈結mysql資料庫

一 解釋一下函式功能和用法 1.mysql real connect 函式原型 mysql mysql real connect mysql mysql,const char host,const char user,const char passwd,const char db,unsigned ...