linux c++操作mysql数据库_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++程序,代码如下:

fcecaa27ea5212ceb9bf034c36bfbf34.gif1 #include

2 #include

3

4 int main(int argc,char *argv[])5 {6 MYSQL conn;7 intres;8 mysql_init(&conn);9 if(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‘)");13   if(res)14 {15    printf("error\n");16 }17   else

18 {19   printf("OK\n");20 }21   mysql_close(&conn);22 }23 return 0;24 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

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

5.编译程序

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

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

6.运行代码

./test

7.再次查看数据库

mysql>use test;

mysql>select * from test;

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

1d54e74cf0e2e2595682e0e3b0283d63.png

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

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 #include

2 #include

3 #define HOST "localhost"

4 #define USERNAME "root"

5 #define PASSWORD ""

6 #define DATABASE "test"

7

8 void insert_sql(char *sql);9 void query_sql(char*sql);10 int main(int argc,char *argv[])11 {12 //insert_sql("insert into test values(‘user‘,‘123456‘)");

13 query_sql("select * from test");14 return 0;15 }16

17 void insert_sql(char *sql)18 {19 MYSQL conn;20 intres;21 mysql_init(&conn);22 if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS))23 {24 printf("connect success!\n");25 res=mysql_query(&conn,sql);26 if(res)27 {28 printf("error\n");29 }30 else

31 {32 printf("OK\n");33 }34 mysql_close(&conn);35 }36

37 }38

39 void query_sql(char*sql)40 {41 MYSQL my_connection; /*这是一个数据库连接*/

42 int res; /*执行sql語句后的返回标志*/

43 MYSQL_RES *res_ptr; /*指向查询结果的指针*/

44 MYSQL_FIELD *field; /*字段结构指针*/

45 MYSQL_ROW result_row; /*按行返回的查询信息*/

46

47 int row, column; /*查询返回的行数和列数*/

48 int i, j; /*只是控制循环的两个变量*/

49

50 /*初始化mysql连接my_connection*/

51 mysql_init(&my_connection);52

53 /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并54 * 返回一个值,返回不为空证明连接是成功的*/

55 if (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

66 if(res)67 { /*现在就代表执行失败了*/

68 printf("Error: mysql_query !\n");69 /*不要忘了关闭连接*/

70 mysql_close(&my_connection);71 }72 else

73 {74 /*现在就代表执行成功了*/

75 /*将查询的結果给res_ptr*/

76 res_ptr = mysql_store_result(&my_connection);77

78 /*如果结果不为空,就把结果print*/

79 if(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 /*输出結果的字段名*/

87 for (i = 0; field = mysql_fetch_field(res_ptr); i++)88 printf("%s\t", field->name);89 printf("\n");90

91 /*按行输出結果*/

92 for (i = 1; i < row; i++)93 {94 result_row =mysql_fetch_row(res_ptr);95 for (j = 0; j < column; j++)96 printf("%s\t", result_row[j]);97 printf("\n");98 }99

100 }101

102 /*不要忘了关闭连接*/

103 mysql_close(&my_connection);104 }105 }106 }完整代码

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

参考资料:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值