在C++项目中使用了Mysql数据库,为了方便后续开发查询,也方便没有使用过C++操作mysql数据库的同学上手,所以在此分享一下基本的C++操作mysql数据库的简单类,这个类满足最基本的需求,你可以在这个基础上增加,再包装,让操作更加便捷,功能更加丰富。提供的类简单化,也是方便上手,容易理解。
头文件CDataBase.h:
#include <windows.h>
#include <mysql.h>
class CDataBase
{
private:
MYSQL m_mysql;
char * m_host;
char * m_user;
char * m_pwd;
char * m_db;
public:
CDataBase(char *host,char *user,char *pwd,char *db);
~CDataBase();
bool NonQuery(const char* chSql);//非查询,增删改
MYSQL_RES * Query(const char* chSql);//查询,返回查询结果
void FreeResult(MYSQL_RES *result);//释放查询占用的资源
int Open();//打开数据库
void Close();//关闭数据库
};
源码文件CDataBase.cpp:
#include "CDataBase.h"
CDataBase::CDataBase(char *host,char *user,char *pwd,char *db)
{
m_host = host;
m_user = user;
m_pwd = pwd;
m_db = db;
}
CDataBase::~CDataBase()
{
}
int CDataBase::Open()
{
if (!mysql_init(&m_mysql))return -1;//初始化连接失败
if (!mysql_real_connect(&m_mysql,m_host,m_user,m_pwd,m_db,0,0,0))return -2;//连接mysql数据库失败
return 0;//打开数据库成功
}
void CDataBase::Close()
{
mysql_close(&m_mysql);
}
bool CDataBase::NonQuery(const char* sql)
{
if (mysql_real_query(&m_mysql, sql, strlen(sql)) == 0)return true;
return false;
}
MYSQL_RES * CDataBase::Query(const char* sql)
{
MYSQL_RES *rs = NULL;
if(NonQuery(sql))
{
rs = mysql_store_result(&m_mysql);
}
return rs;
}
void CDataBase::FreeResult(MYSQL_RES *result)
{
if (result)mysql_free_result(result);
}
使用代码示例文件main.cpp:
#include <iostream>
using namespace std;
#include "CDataBase.h"
#pragma comment(lib,"libmysql.lib")
void main()
{
CDataBase db("127.0.0.1","root","","childs");
db.Open();
if(db.NonQuery("insert into t_table(id,name,age)values(1,'张三',10)"))
{
cout<<"登记成功!\n";
}
MYSQL_RES* pres = db.Query("select * from t_table");
MYSQL_ROW row ;
while(row = mysql_fetch_row(pres))
{
string r0 = row[0];
string r1 = row[1];
string r2 = row[2];
cout<<r0.c_str()<<"\t";
cout<<r1.c_str()<<"\t";
cout<<r2.c_str()<<"\t";
cout<<endl;
}
db.FreeResult(pres);
db.Close();
}
项目中需要添加mysql的头文件和lib库文件,分为两个文件夹:点此下载mysql头文件和lib库文件压缩包
将两个文件夹解压后放在cpp所在文件夹下即可。
VS项目属性中,设置一下包含目录:项目属性页 -> VC++目录 -> 包含目录填写【.\include;】,库目录填写【.\lib;】,确定即可。【】内为填写内容,不要将【】填进去了。
今天的积累,是方便明天的更快的开发。如果你也有一些不错的资源,记得分享到网站哦。分享后,我就删除本机的项目,免得占地方,而且容易丢失。放在网站永久存留,方便查询。