Linux 下C語言連接mysql實例詳解
第一步:
安裝mysql,
第二步:
安裝mysql.h函數庫
sudo apt-get install libmysqlclient-dev
執行之后就可以看到/usr/include/MySQL目錄了
然后開始我們的鏈接.
首先看我的數據庫
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || chat_room || mysql || mysql_shiyan || performance_schema || sys |+--------------------+6 rows in set (0.00 sec)mysql> use chat_room;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+---------------------+| Tables_in_chat_room |+---------------------+| user_message |+---------------------+1 row in set (0.00 sec)mysql> select * from user_message;+------+-------+--------+| ID | name | passwd |+------+-------+--------+| 1 | linux | linux || 2 | lyt | lyt |+------+-------+--------+2 rows in set (0.00 sec)
可以看到,我在chat_room數據庫中有user_message這張表,我們現在要做的就是讀出這張表里的數據.
直接上代碼
#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<mysql/mysql.h>int main(void){ char *sql; sql="SELECT * FROM user_message;"; int res;//執行sql語句后的返回標志 MYSQL_RES *res_ptr;//指向查詢結果的指針 MYSQL_FIELD *field;//字段結構指針 MYSQL_ROW result_row;//按行返回查詢信息 int row,column;//查詢返回的行數和列數 MYSQL *conn;//一個數據庫鏈接指針 int i,j; //初始化連接句柄 conn = mysql_init(NULL); if(conn == NULL) { //如果返回NULL說明初始化失敗 printf("mysql_init failed!/n"); return EXIT_FAILURE; } //進行實際連接 //參數 conn連接句柄,host mysql所在的主機或地址,user用戶名,passwd密碼,database_name數據庫名,后面的都是默認 conn = mysql_real_connect(conn,"localhost","lyt","","chat_room",0,NULL,0); if (conn) { printf("Connection success!/n"); } else { printf("Connection failed!/n"); } mysql_query(conn,"set names gbk");//防止亂碼。設置和數據庫的編碼一致就不會亂碼 res = mysql_query(conn,sql);//正確返回0 if(res) { perror("my_query"); mysql_close(conn); exit(0); } else{ //把查詢結果給res_ptr res_ptr = mysql_store_result(conn); //如果結果不為空,則輸出 if(res_ptr) { column = mysql_num_fields(res_ptr); row = mysql_num_rows(res_ptr); printf("查到%d行/n",row); //輸出結果的字段名 for(i = 0;field = mysql_fetch_field(res_ptr);i++) { printf("%10s",field->name); } puts(""); //按行輸出結果 for(i = 1;i < row+1;i++){ result_row = mysql_fetch_row(res_ptr); for(j = 0;j< column;j++) { printf("%10s",result_row[j]); } puts(""); } } } //退出前關閉連接 mysql_close(conn); return 0;}
結果
gcc -o mysql a.c -L/usr/lib/mysql -lmysqlclient./mysql Connection success!查到2行 ID name passwd 1 linux linux 2 lyt lyt
注釋寫的相當清楚,有什么不清楚的可以給我留言,大家一塊學習!
新聞熱點
疑難解答