mysql CAPI与C++的交互

    技术2022-05-19  21

    首先要保证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)";

          同上

    }

     

     

     

     

     


    最新回复(0)