c++-连接mysql数据库

用c/c++连mysql数据库一般用哪些方法,

有没有类似vc用的mysql++类库,或者delphi开发常用的mysql控件什么的?

执行一个查询有以下几个步骤要做。首先执行一个查询,然后保存结果, 得到的是一个子集。这里是一个小例子:

1
#include #include #include   "mysql.h" MYSQL   mysql; MYSQL\_RES   \*res; MYSQL\_ROW   row; void   exiterr(int   exitcode) { fprintf(   stderr,   "%s/n",   mysql\_error(&mysql)   ); exit(   exitcode   ); } int   main() { uint   i   =   0; if   (!(mysql\_connect(&mysql,"host","username","password"))) exiterr(1); if   (mysql\_select\_db(&mysql,"payroll")) exiterr(2); if   (mysql\_query(&mysql,"SELECT   name,rate   FROM   emp\_master")) exiterr(3); if   (!(res   =   mysql\_store\_result(&mysql))) exiterr(4); while((row   =   mysql\_fetch\_row(res)))   { for   (i=0   ;   i   <   mysql\_num\_fields(res);   i++) printf("%s/n",row\[i\]); } mysql\_free\_result(res); mysql\_close(&mysql); }

mysql_query 函数将把查询送给服务器,如果查询成功,调用mysql_store_result 函数将分配一个MYSQL_RES 结构并且重新从服务器获得一个结果集。你可以用 mysql_fetch_row 函数来查看数据。这样做你将获得一个 MYSQL_ROW 指针指向数 据中的一行。 MYSQL_ROW 指针是一简单的字符串数组。所有的数据类型被转换成 字符串送到客户端。 mysql_num_fields 函数将告诉你返回的列数。

你可以继续调用 mysql_fetch_row 直到它返回一个空指针以得到查询中的每一行。 注意在这个例子里,我们没有检查有空指针的列。如果你不使用非空列的表,那么 你必须检查一个特殊行的列是否为空。 一旦你使用完毕一个结果集,你必须释放它。这通过 mysql_free_result 来完成。 最后调用 mysql_close 来关闭你和数据库之间的连接。 查看结果集 你可以不用调用 mysql_fetch_row 就查出返回的结果集共有多少行。

这由 int mysql_num_rows(MYSQL_RES *result)来完成。 改变到被下一个 mysql_fetch_row 调用返回的行,你可以用 void mysql_data_seek(MYSQL_RES *res, uint offset) 改变到任意一行。 获得更多的信息

你可以使用这几个额外的函数来找出关于一个查询的更多的信息,并从服务器获得 这些信息。

如果你执行一个UPDATE,INSERT或者DELETE查询,你可以用 int mysql_affected_rows 来查出共有多少行数据被你影响到。 如果在你的数据库里有二进制数据,那么得知数据的长度将是有用的。unsigned int *mysql_fetch_lengths(MYSQL_RES *mysql) 将返回一指出了结果集中每一列的长度的整型数组。

当你插入一个带有 AUTO_INCREMENT 列的表的时候,你可以用 int mysql_insert_id(MYSQL *mysql) 来查出生成的那一行的ID。

1
#include   "/include/mysql/mysql.h"   /*为绝对路径*/ #include   <stdio.h> int   main(int   argc,char   \*argv\[\]) { char   \*user   =   "root",   \*pwd   =   "mysql",   \*dbname   =   "mysql"; MYSQL   mysql; MYSQL\_RES   \*mysql\_ret; MYSQL\_ROW   mysql\_row; unsigned   long   num\_rows; int   ret; mysql\_init(&mysql); if(mysql\_real\_connect(&mysql,NULL,user,pwd,dbname,0,NULL,0)) { printf("Connection   success!/n"); ret   =   mysql\_query(&mysql,"select   \*   from   user"); if(!ret) { printf("Query   Success!/n"); mysql\_ret   =   mysql\_store\_result(&mysql); if(mysql\_ret   !=   NULL) { printf("Store   Result   Success!/n"); num\_rows   =   mysql\_num\_rows(mysql\_ret); if(num\_rows   !=   0) { printf("%d/n",num\_rows); while(mysql\_row   =   mysql\_fetch\_row(mysql\_ret)) { printf("%s/t%s/t%s/t%s/t%s/t%s/n",mysql\_row\[0\],mysql\_row\[1\],mysql\_row\[2\],mysql\_row\[3\],mysql\_row\[4\],mysql\_row\[5\]); } } else { printf("mysql\_num\_rows   Failed!/n"); exit(-1); } mysql\_free\_result(mysql\_ret); exit(0); } else { printf("Store   Result   Failed!/n"); exit(-1); } } else { printf("Query   Failed!/n"); exit(-1); } } else { printf("Connection   Failed/n"); exit(-1); } }

如果你包含了正确的头文件而在连接的时候, 告诉你没有符号连接 你应该连接你需要的库

  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~