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