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