VC下使用MySql的方法

[size=medium][/size] 在做对比mysql和sqlite数据对比工作时候,我用C++编程来实现时候遇到了些问题,首先就是怎么在C++里把mysql的数据读出来,现在解决如下:
1.需要用到的头文件?
由于C++没有提供专门的数据库操作接口函数,相应的接口函数都由第三方来提供。Mysql本身提供了这些函数接口,因此我们要把他们导入到项目中。这里要注意的是,安装mysql时候,要选上安装开发组件,安装后才会包含这些头文件,而接口函数就由这些头文件和lib等文件提供。Mysql似乎没有公开这些接口函数的实现代码,而是封装进了静态库文件libmyql.lib和动态库文件libmysql.dll。
因此我们首先要做两个事情:
1.1mysql安装目录的里mysql server 5.0\lib\debug下的libmysql.lib和 libmysql.dll复制到C++工程等项目文件夹里
由于appserv里的mysql里,我找不到此项,因此我在网上下载了一个mysql代码,把其中的lib和include放到工程目录里,这两个文件夹含有上面提到的
2、然后参考网上的代码我在工程文件里添了头:
pragma comment(lib,"lib\\libmysql.lib") //把库文件载入C++项目
#include"iostream"
#include <WinSock2.h>
#include "include/mysql.h"
3、此时下面的这个读出数据程序便可用了:[/size][/size][/size]
using namespace std;
int main()
{
char* user_name="你的数据库管理员名称";
char* user_pw="你的数据库密码";
char* db_name="my_db";
//用于查询
int ret=0;
string sql_cmd;
// 收集查询结果
MYSQL_RES *res_ptr=NULL;
//显示字段名
MYSQL_ROW sqlrow=NULL;
MYSQL_FIELD *fields=NULL;
unsigned int num_fields=0;

int ii;

MYSQL obj_sql;

mysql_init(&obj_sql);

ret=mysql_options(&obj_sql,MYSQL_SET_CHARSET_NAME,"gbk");
if(ret==0)
cout<<"mysql options success"<<endl;
else
cout<<"options failed";

if(mysql_real_connect(&obj_sql,NULL,user_name,user_pw,db_name,0,NULL,0))
{

cout<<"数据库连接成功"<<endl;

}

else
{
const char* error_code=0;
error_code=mysql_error(&obj_sql);
cout<<"Error Code:"<<error_code<<endl;



}

//查询
sql_cmd="select *from person";
ret=mysql_real_query(&obj_sql,sql_cmd.c_str(),sql_cmd.length());
if(ret!=0)
{
cout<<"fail to query"<<endl;

}

//获取查询结果
res_ptr=mysql_store_result(&obj_sql);
if(res_ptr)
{
cout<<"rows number:"<<(unsigned long)mysql_num_rows(res_ptr)<<endl; //行数


}

//显示字段名
num_fields=mysql_num_fields(res_ptr); //结果的列数
fields=mysql_fetch_fields(res_ptr); //所有字段存到字段结构体
for(ii=0;ii<num_fields;ii++)
{
//显示所有字段名
cout<<fields[ii].name<<"\t";


}
cout<<endl;

///////////////////////显示每行查询结果
while(sqlrow=mysql_fetch_row(res_ptr))//取出行
{
//每行都做如下处理
// string str;
for(int ii=0;ii<num_fields;ii++)
{

if(sqlrow[ii] !=NULL)
{
//str=sqlrow[ii];
//cout<<str.c_str()<<"\t";
cout<<sqlrow[ii]<<"\t";

}
else
{
cout<<"NULL\t";


}

}

cout<<endl;


}
//结束显示
mysql_free_result(res_ptr);
mysql_close(&obj_sql); //关闭数据库连接
return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值