Linux 下c語言連線與操作MYSQL
阿新 • • 發佈:2018-11-11
1.安裝mysql
2.安裝mysql.h函式庫
sudo apt-get install libmysqlclient-dev
3. mysql_real_connect()
連線一個mysql伺服器
語法如下
MYSQL *mysql_real_connect (MYSQL *mysql, const char *host, //主機名 const char *user, //使用者名稱 const char *passwd, //密碼 const char *db, //資料庫名字 unsigned int port, //預設0 const char *unix_socket, //預設NULL unsigned long client_flag)//預設0
4.具體程式碼如下
#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 sql 裡面sql語句 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; }
5.編譯
gcc -o mysql mysql.c -l mysqllclient