mysql CAPI与C++的交互

来源:互联网 发布:java jdk环境配置 编辑:程序博客网 时间:2024/05/21 11:02

首先要保证mysql的服务是开启的才能进行对数据库的操作。

mysql与C++交互有两个非常好的三方库一个是mysql++,一个是connector/C++,这两个库我尝试了mysql++不过我发现在中国mysql++的很多资料缺乏,很多都是讲了一半剩下的就没了,除非去看英文文档,可惜我英文不算好,所以我果断先放弃试用三方库还是老老实实的用用mysql官方的Capi库。

 

1、下载mysql server,把其中的include和lib拷贝到你的工程项目里,并引用。

2、在进行数据库操作的时候我们需要声明一个MYSQL 的数据结构,要包含mysql.h,但是你突然发现会出现编译报错,原来mysql.h里引用了windows.h的一些东西,所以你要先包含windows.h才能正常使用mysql CAPI.

 

#include <windows.h>

#include"mysql.h"

 

 

void main()

{

     MYSQL mySql;

 

     我们必须先调用mysql的初始化

     mysql_init(&mysql);

    

     然后再连接数据库

    char* hostIp="127.0.0.1";这个不用我说了吧

   char* userName="root";默认的数据库用户名,可以自定义

    char* pwd="1";用户密码

    char* port=“3306”;端口名

    char* dbName="demo";数据库名

     mysql_real_connect(&mySql,hostIp,userName,pwd,dbName,port,NULL,0);

     链接数据库,返回MYSQL的指针,最后两个参数依次为连接类型,MySQL运行成ODBC数据库的标记。

 

     现在我们进行增、删、改、查的基本操作

     查询

     char* query="select * from demo.temp";由于我没有先使用use 数据库名,所以需要用数据库名来引用表名

     mysql_real_query(&mySql,query,(unsinged long)strlen(query)); 

    执行之后会产生一个结果集

     MYSQL_RES* res;

     mysql_use_result(res);返回查询的结果集也可使用mysql_store_result(MYSQL_RES*)区别请参考官方手册

http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview

    

通过循环检索每一行读出每行数据

     MYSQL_ROW row;

     while((row=mysql_fetch_row(res))!=NULL)
    {
          for (int i=0;i<mysql_num_fields(res);i++)
         {
             cout<<row[i]<<endl;
         }
    }

    注意每次使用完结果集时,请释放结果集

    mysql_free_result(res);

     修改

      queryTemp="update demo.temp set xxxx=xxxx where id=xx";
      int isSuccse=mysql_real_query(&mySql,queryTemp,(unsigned long)strlen(queryTemp));
      if (isSuccse)
      {
         cout<<"错误"<<endl;
      }

      删除

      queryTemp="delete from demo.temp where id=xx";

      同上

      增加

    

      queryTemp="insert demo.temp values(id,xx,xxx)";

      同上

}

 

 

 

 

 

原创粉丝点击