一、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 ...