mysql c api c++ wrapper

//CDataBase.h
#ifndef CDATABASE_H
#define CDATABASE_H

#include "stdio.h"
#include "/usr/include/mysql/mysql.h"  //#include <mysql.h>  
#include <string.h>

class CDataBase
{
public:
    CDataBase(const char *host, const char *user, const char *passwd, const char *db,unsigned int port=3306);

    ~CDataBase();
    bool ExecuteSql(const char* chSql);
    MYSQL_RES * OpenRecordset(const char* chSql);
    void FreeResult(MYSQL_RES *result);
   
private:
    MYSQL mysql;
    bool _bOpen;
    const char *_host;
    const char *_user;
    const char *_passwd;
    const char *_db;
    unsigned int _port;

protected:
    bool Open();
    void Close();
    bool GetConState();
};

#endif

 

//CDataBase.cpp

#include "CDataBase.h"

CDataBase::CDataBase(const char *host, const char *user, const char *passwd, const char *db,unsigned int port)
{
    _host = host;
    _user = user;
    _passwd = passwd;
    _db = db;
    _port=port;

    _bOpen = false;
    Open();
}


CDataBase::~CDataBase()
{
    Close();
}

bool CDataBase::GetConState()
{
    return _bOpen;
}

bool CDataBase::Open()
{
    if( !mysql_init(&mysql) )
    {
        printf("\nFailed to initate MySQL connection");
        return false;
    }
    if (!mysql_real_connect(&mysql,_host,_user,_passwd,_db,_port,NULL,0))
    {
        printf( "Failed to connect to MySQL: Error: %s\n", mysql_error(&mysql));
        return false;
    }
    printf("Logged on to database sucessfully\n");
    _bOpen = true;
    return _bOpen;
}


void CDataBase::Close()
{
    if(_bOpen)
    {
        mysql_close(&mysql);
        _bOpen = false;
    }
}

bool CDataBase::ExecuteSql(const char* chSql)
{
    if(!GetConState())
        return false;
    if(mysql_real_query(&mysql,chSql,strlen(chSql))==0)
        return true;
}


MYSQL_RES * CDataBase::OpenRecordset(const char* chSql)
{
    MYSQL_RES *rs = NULL;
    if(ExecuteSql( chSql ))
    {
        rs = mysql_store_result(&mysql);
    }
    return rs;
}


void CDataBase::FreeResult(MYSQL_RES *result)
{
    if(result)
        mysql_free_result(result);
}

 

//Test.cpp


#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>
#include "CDataBase.h"

using namespace std;

int main(int argc, char *argv[])
{
    const char *host = "192.168.16.204";
    const char *user = "launchcloud";
    const char *pwd = "Launch-2013-Cloud";
    const char *dbn = "launchcloud";
    unsigned int port=3366;
//构造对象
    CDataBase *db = new CDataBase(host,user,pwd,dbn,port);
   
//创建一个张
    db->ExecuteSql( "create table tt1(id int ,name varchar(20))");
//插入一个数据
    db->ExecuteSql( "insert into tt1(id,name)values('31','abc')");

//查询数据
    MYSQL_RES *res = NULL;
    MYSQL_ROW row;
   
    res = db->OpenRecordset("select * from tt1");
    if(res)
    {
        cout << "OpenRecordset\n" << endl;
        while(row = mysql_fetch_row(res))
        {
            for(int t=0;t<mysql_num_fields(res);t++)
            {
                printf("%s ",row[t]);
            }
            printf("\n");
        }
    }
    db->FreeResult(res);
    delete db;
    db = NULL;

    return EXIT_SUCCESS;
}

 

/ g++ -o test TestDataBase.cpp CDataBase.o -L./lib -lmysqlclient//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值