当前位置:首页 > 操作系统 > Linux

Linux下C++连MySQL数据库

  1.查看本地有没有安装mysql,命令就是mysql,如果有这个命令就表示安装了mysql数据库软件。如果没有就自行安装。
  MySQL-server-4.0.16-0.i386.rpm   
  MySQL-client-4.0.16-0.i386.rpm


  2.查看本地有没有安装mysql的开发包。命令是 `mysql_config --cflags --libs` 如果有安装就会有一串编译选项和连接库。如果没有就自行安装 mysql-devel-*****的rpm包 后面是版本号。mysql开发包提供了基本操作接口。安装后头文件在/usr/include/mysql 而动态库在 /usr/lib/mysql 上。

 

  3.创建一个用于练习的数据库test.进入mysql> 然后依次输入:

    mysql>create database test; 

    mysql>use test;    //切换到test数据库中

    mysql> create table test(name varchar(255),num int(10) ); //创建一个叫test的表

    mysql>show create table test;  //显示刚才创建的表信息

    mysql> select * from test;   //查询test表中数据

    mysql>quit

 

  4.编写一个c++程序,代码如下:

             1 #include <stdio.h>
 2 #include <mysql.h>
 3 4int main(int argc,char *argv[])
 5{
 6    MYSQL conn;
 7int res;
 8     mysql_init(&conn);
 9if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS)) //"root":数据库管理员 "":root密码 "test":数据库的名字
10    {
11       printf("connect success!n");
12       res=mysql_query(&conn,"insert into test values(‘user‘,‘123456‘)");
13if(res)
14      {
15           printf("errorn");
16      }
17else18      {
19           printf("OKn");
20      }
21       mysql_close(&conn);
22    }
23return0;
24 }

  代码不是很难理解,就不解释了。

 

  5.编译程序

  使用的编译代码(注意哪两个不是单引号而是反单引号)

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

  6.运行代码

    ./test

 

  7.再次查看数据库

    mysql>use test;

    mysql>select * from test;

    这样就可以查看到插入的信息了。

 

 ================我是分割线============================

                  1 #include <stdio.h>
  2 #include <mysql.h>
  3#define HOST "localhost"
  4#define USERNAME "root"
  5#define PASSWORD ""
  6#define DATABASE "test"
  7  8void insert_sql(char * sql);
  9void query_sql(char* sql);
 10int main(int argc,char *argv[])
 11{
 12//insert_sql("insert into test values(‘user‘,‘123456‘)"); 13     query_sql("select * from test");
 14return0;
 15}
 16 17void insert_sql(char * sql)
 18{
 19    MYSQL conn;
 20int res;
 21     mysql_init(&conn);
 22if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS))
 23    {
 24     printf("connect success!n");
 25     res=mysql_query(&conn,sql);
 26if(res)
 27    {
 28         printf("errorn");
 29    }
 30else 31    {
 32         printf("OKn");
 33    }
 34     mysql_close(&conn);
 35    }
 36 37}
 38 39void query_sql(char* sql) 
 40{
 41     MYSQL my_connection; /*这是一个数据库连接*/ 42int res; /*执行sql語句后的返回标志*/ 43     MYSQL_RES *res_ptr; /*指向查询结果的指针*/ 44     MYSQL_FIELD *field; /*字段结构指针*/ 45     MYSQL_ROW result_row; /*按行返回的查询信息*/ 46 47int row, column; /*查询返回的行数和列数*/ 48int i, j; /*只是控制循环的两个变量*/ 49 50/*初始化mysql连接my_connection*/ 51     mysql_init(&my_connection);
 52 53/*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并
 54     *     返回一个值,返回不为空证明连接是成功的*/ 55if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) 
 56    {
 57/*连接成功*/ 58     printf("数据库查询query_sql连接成功!n");
 59/*这句话是设置查询编码为utf8,这样支持中文*/ 60     mysql_query(&my_connection, "set names utf8");
 61 62/*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句,
 63     *         这会返回一个int值,如果为0,证明語句执行成功*/ 64     res = mysql_query(&my_connection, sql);
 65 66if (res) 
 67     { /*现在就代表执行失败了*/ 68         printf("Error: mysql_query !n");
 69/*不要忘了关闭连接*/ 70         mysql_close(&my_connection);
 71    }
 72else 73    { 
 74/*现在就代表执行成功了*/ 75/*将查询的結果给res_ptr*/ 76         res_ptr = mysql_store_result(&my_connection);
 77 78/*如果结果不为空,就把结果print*/ 79if (res_ptr) 
 80        {
 81/*取得結果的行数和*/ 82         column = mysql_num_fields(res_ptr);
 83         row = mysql_num_rows(res_ptr) + 1;
 84         printf("查询到 %lu 行 n", row);
 85 86/*输出結果的字段名*/ 87for (i = 0; field = mysql_fetch_field(res_ptr); i++)
 88             printf("%st", field->name);
 89         printf("n");
 90 91/*按行输出結果*/ 92for (i = 1; i < row; i++)
 93        {
 94             result_row = mysql_fetch_row(res_ptr);
 95for (j = 0; j < column; j++)
 96             printf("%st", result_row[j]);
 97             printf("n");  
 98        }  
 99100        }  
101102/*不要忘了关闭连接*/103         mysql_close(&my_connection);  
104    }  
105    }  
106 } 
完整代码

 其实数据库的增加,删除,更新等操作比较简单,都是返回一个值表示成功与否。而查询比较麻烦。返回一个结果集,所以操作起来比较麻烦! 

 

参考资料:

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

原文:http://www.cnblogs.com/wunaozai/p/3618383.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐