c++操作mysql


1 需要安裝mysql客戶端

安裝mysql

2 查看依賴

mysql_config --cflags --libs

安裝依賴:yum install mysql-devel

3 導入頭文件

#include <mysql.h>

4 相關代碼

  1 #include <stdio.h>
  2 #include <mysql.h>
  3 
  4 #define HOST "localhost"
  5 #define USERNAME "root"
  6 #define PASSWORD ""
  7 #define DATABASE "test"
  8 
  9 void insert_sql(char * sql);
 10 void query_sql(char* sql);
 11 
 12 int main(int argc,char *argv[])
 13 {
 14     //insert_sql("insert into test values('user','123456')");
 15     query_sql("select * from test");
 16     return 0;
 17 }
 18 
 19 void insert_sql(char * sql)
 20 {
 21     MYSQL conn;
 22     int res;
 23     mysql_init(&conn);
 24     if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS))
 25     {
 26     printf("connect success!\n");
 27     res=mysql_query(&conn,sql);
 28     if(res)
 29     {
 30         printf("error\n");
 31     }
 32     else
 33     {
 34         printf("OK\n");
 35     }
 36     mysql_close(&conn);
 37     }
 38 
 39 }
 40 
 41 void query_sql(char* sql) 
 42 {
 43     MYSQL my_connection; /*這是一個數據庫連接*/
 44     int res; /*執行sql語句后的返回標志*/
 45     MYSQL_RES *res_ptr; /*指向查詢結果的指針*/
 46     MYSQL_FIELD *field; /*字段結構指針*/
 47     MYSQL_ROW result_row; /*按行返回的查詢信息*/
 48 
 49     int row, column; /*查詢返回的行數和列數*/
 50     int i, j; /*只是控制循環的兩個變量*/
 51 
 52     /*初始化mysql連接my_connection*/
 53     mysql_init(&my_connection);
 54 
 55     /*這里就是用了mysql.h里的一個函數,用我們之前定義的那些宏建立mysql連接,並
 56      *     返回一個值,返回不為空證明連接是成功的*/
 57     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) 
 58     {
 59     /*連接成功*/
 60     printf("數據庫查詢query_sql連接成功!\n");
 61     /*這句話是設置查詢編碼為utf8,這樣支持中文*/
 62     mysql_query(&my_connection, "set names utf8");
 63 
 64     /*下面這句話就是用mysql_query函數來執行我們剛剛傳入的sql語句,
 65      *         這會返回一個int值,如果為0,證明語句執行成功*/
 66     res = mysql_query(&my_connection, sql);
 67 
 68     if (res) 
 69     { /*現在就代表執行失敗了*/
 70         printf("Error: mysql_query !\n");
 71         /*不要忘了關閉連接*/
 72         mysql_close(&my_connection);
 73     }
 74     else 
 75     { 
 76         /*現在就代表執行成功了*/
 77         /*將查詢的結果給res_ptr*/
 78         res_ptr = mysql_store_result(&my_connection);
 79 
 80         /*如果結果不為空,就把結果print*/
 81         if (res_ptr) 
 82         {
 83         /*取得結果的行數和*/
 84         column = mysql_num_fields(res_ptr);
 85         row = mysql_num_rows(res_ptr) + 1;
 86         printf("查詢到 %lu 行 \n", row);
 87 
 88         /*輸出結果的字段名*/
 89         for (i = 0; field = mysql_fetch_field(res_ptr); i++)
 90             printf("%s\t", field->name);
 91         printf("\n");
 92 
 93         /*按行輸出結果*/
 94         for (i = 1; i < row; i++)
 95         {
 96             result_row = mysql_fetch_row(res_ptr);
 97             for (j = 0; j < column; j++)
 98             printf("%s\t", result_row[j]);
 99             printf("\n");  
100         }  
101 
102         }  
103         mysql_free_result(res_ptr);
104         /*不要忘了關閉連接*/  
105         mysql_close(&my_connection); 
106         /*釋放資源*/
107         mysql_library_end();
108     }  
109     }  
110 } 
完整代碼

5  編譯

g++ testmysql.cpp `mysql_config --cflags --libs` -o test

 

參考資料:

https://www.cnblogs.com/wunaozai/p/3618383.html

http://blog.csdn.net/fykhlp/article/details/5950485#

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM