免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1114 | 回复: 0
打印 上一主题 下一主题

对MYSQL C API做的一个封装 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-13 15:19 |只看该作者 |倒序浏览
   对MYSQL C
API做的一个封装,使用很简单,构造一个对象,就可直接执行SQL,但对于需返回结果的查询语句,对其数据集没做封装,仍需直接调用mysql c api对其进行处理,本人将下次完成,不管如何,欢迎大家多提宝贵的意见!
  
//CDataBase.h
#ifndef   CDATABASE_H
#define   CDATABASE_H
  
#include    "stdio.h "
#include    "/usr/include/mysql/mysql.h "
#include     
  
class   CDataBase
{
public:
             CDataBase(const   char   *host,   const   char   *user,   const   char   *passwd,   const   char   *db);
  
             ~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;
  
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)
{
             _host   =   host;
             _user   =   user;
             _passwd   =   passwd;
             _db   =   db;
  
             _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,0,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     
#endif
  
#include     
#include     
#include    "cdatabase.h "
  
using   namespace   std;
  
int   main(int   argc,   char   *argv[])
{
             const   char   *host   =    "127.0.0.1 ";
             const   char   *user   =    "root ";
             const   char   *pwd   =   NULL;
             const   char   *dbn   =    "test ";
//构造对象
             CDataBase   *db   =   new   CDataBase(host,user,pwd,dbn);
              
//创建一个张
             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   tt ");
             if(res)
             {
                         cout    FreeResult(res);
             delete   db;
             db   =   NULL;
  
             return   EXIT_SUCCESS;
}
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34802/showart_441646.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP