当前位置:C++技术网 > 精选软件 > 最简单的C++操作mysql数据库的基础类库源码和示例

最简单的C++操作mysql数据库的基础类库源码和示例

更新时间:2016-06-23 17:22:53浏览次数:1+次

    在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;】,确定即可。【】内为填写内容,不要将【】填进去了。

    今天的积累,是方便明天的更快的开发。如果你也有一些不错的资源,记得分享到网站哦。分享后,我就删除本机的项目,免得占地方,而且容易丢失。放在网站永久存留,方便查询。