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-2021 翟天野

请我喝杯咖啡吧~