c++自定义的数据库类
自定义的数据库类:Class DataBase 收藏
class DataBase
{
private:
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr m_res;
_variant_t rec_affected;
char m_cConstr[16];
char m_cUserName[32];
char m_cPassword[32];
bool m_bOpenType;
public:
DataBase();
~DataBase();
void REOpen();
bool IsOpen();
bool OpenDB( char *pContStr, char *pSbName, char *pSbPw );
bool OpenDB( char *pContStr );
bool GetData( char *pSqlStr, _RecordsetPtr &res );
bool Execute( char *pSqlStr );
bool NoneRetOpen( char *pSqlStr );
bool CommandPro( char *pProName );
_ConnectionPtr& GetConnection();
void CloseDB();
};
<< CPP >>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")
#include <objbase.h>
#include "CDataBase.h"
DataBase::DataBase()
{
CoInitialize(NULL);
m_pConnection = NULL;
m_pCommand = NULL;
m_pConnection.CreateInstance(__uuidof(Connection));
m_res.CreateInstance(__uuidof(Recordset));
}
DataBase::~DataBase()
{
CloseDB();
if(m_res->GetState() == adStateOpen)
m_res->Close();
m_res.Release();
m_res = NULL;
m_pConnection.Release();
m_pConnection = NULL;
CoUninitialize();
}
_ConnectionPtr& DataBase::GetConnection()
{
return m_pConnection;
}
bool DataBase::OpenDB( char *pContStr, char *pSbName, char *pSbPw )
{
try
{
if(m_pConnection->State)
return TRUE;
// 打开本地Access库text.mdb
m_pConnection->Open( (_bstr_t)pContStr, pSbName, pSbPw, adModeUnknown );
if( m_pConnection->State != adStateOpen )
return FALSE;
m_pConnection->put_ConnectionTimeout(long(10));//设置超时
m_pConnection->put_CommandTimeout(long(25));
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;
strcpy( m_cConstr, pContStr );
strcpy( m_cUserName, pSbName );
strcpy( m_cPassword, pSbPw );
m_bOpenType = TRUE;
}
catch(_com_error e)
{
return FALSE;
}
return TRUE;
}
bool DataBase::OpenDB( char *pContStr )
{
try
{
if(m_pConnection->State)
return TRUE;
m_pConnection->ConnectionString="File Name=.\\DBConn.udl";
m_pConnection->PutConnectionTimeout(10);
m_pConnection->PutCommandTimeout(25);
m_pConnection->Open("","","",NULL);
if( m_pConnection->State != adStateOpen )
return FALSE;
m_bOpenType = FALSE;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;
strcpy( m_cConstr, pContStr );
}
catch(_com_error e)
{
return FALSE;
}
return TRUE;
}
VOID DataBase::CloseDB()
{
if(m_pConnection==NULL) return;
if(IsOpen())
m_pConnection->Close();
}
bool DataBase::Execute( char *pSqlStr )
{
if(!IsOpen()) return FALSE;
try
{
m_pConnection->Execute( pSqlStr,&rec_affected,0 );
}
catch(_com_error e)
{
return FALSE;
}
return TRUE;
}
bool DataBase::NoneRetOpen( char *pSqlStr )
{
if(!IsOpen()) return FALSE;
if(m_res->GetState() == adStateOpen)
m_res->Close();
try
{
m_res->Open(pSqlStr,m_pConnection.GetInterfacePtr(),adOpenForwardOnly ,adLockReadOnly,adCmdText);
}
catch(_com_error e)
{
return FALSE;
}
return TRUE;
}
bool DataBase::CommandPro( char *pProName )
{
if(!IsOpen()) return FALSE;
try
{
m_pCommand->CommandText = pProName;
m_pCommand->Execute(NULL,NULL, adCmdText);
}
catch(_com_error *e)
{
MessageBox( NULL, e->ErrorMessage(), "", MB_OK );
return FALSE;
}
return TRUE;
}
/*
bool DataBase::CommandPro( char *pProName )
{
if(!IsOpen()) return FALSE;
try
{
m_pCommand->CommandText = pProName;
m_pCommand->Execute(NULL,NULL, adCmdText);
}
catch(_com_error *e)
{
MessageBox( NULL, e->ErrorMessage(), "", MB_OK );
return FALSE;
}
return TRUE;
}
*/
bool DataBase::IsOpen()
{
try
{
return (m_pConnection != NULL && (m_pConnection->State & adStateOpen));
}
catch(_com_error e)
{
return FALSE;
}
}
void DataBase::REOpen()
{
try
{
if (m_pConnection->State != adStateOpen)
m_pConnection->Open( m_cConstr, m_cUserName, m_cPassword, adModeUnknown);
}
catch(_com_error e)
{
}
}
bool DataBase::GetData( char *pSqlStr ,_RecordsetPtr &res )
{
if(!IsOpen()) return FALSE;
if(res->GetState() == adStateOpen)
res->Close();
try
{
res->Open(pSqlStr,m_pConnection.GetInterfacePtr(),adOpenForwardOnly ,adLockReadOnly,adCmdText);
}
catch(_com_error e)
{
return FALSE;
}
return TRUE;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/johnny_83/archive/2007/07/22/1701801.aspx
转载于:https://www.cnblogs.com/RivuletAmongHill/archive/2011/05/05/2037442.html
c++自定义的数据库类相关推荐
- java 异常处理的关键字_java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类...
packagecn.kecheng;importjava.util.Scanner;/**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中通过异常 ...
- django authentication_classes自定义权限验证类 authenticate
什么是身份认证 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或与其签名的令牌)关联的机制. 视图的最开始处运行身份验证 在权限和限制检查发生之前,以及在允许继续执行任何其他代码之前,始终在视 ...
- Django中数据对象的增删改查常用方法,自定义管理器类,过滤器及F和Q对象等知识点总结
Django对象的增删改查 我们为了对django对象的增删改查进行总结,先在model.py文件中创建类便于举例 定义学生: class Students(models.Model):sname=m ...
- 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...
PHP学习教程文章简介: 同时支持三个MySQL+SQLite+PDO的PHP数据库类使用方法: // mysql connect $db = new SQL(mysql:host=localhost ...
- mysql 定义class_MySQL数据库类的定义
俗话说好的开始是成功的一半,而PHP+MySQL项目中数据库的操作是重点之一,能否简化数据库操作程序的编写,就成了影响工作效率的关键之一. 所以小阳并不是一开始就做页面,而是先建立一个dbclass. ...
- python 多线程 类_Python中如何自定义一个多线程类呢?
摘要: 下文讲述Python中自定义一个多线程类的方法分享,如下所示: 实现思路: 1.定义一个类继承threading.Thread 2.在自定义类中构造函数重写run方法 例: Python3中自 ...
- CodeIgniter自带的数据库类使用介绍
为什么80%的码农都做不了架构师?>>> 在 CodeIgniter 中,使用数据库是非常频繁的事情.你可以使用框架自带的数据库类,就能便捷地进行数据库操作. 初始化数据库类 ...
- oracle设置缓存大小设置多少,【数据库类※从V$DB_CACHE_ADVICE中设置数据缓冲大小※】...
[数据库类※从V$DB_CACHE_ADVICE中设置数据缓冲大小※] Oracle 9i引入了一个新的途径来预测数据缓冲cache中附加数据缓存的所带来的好处的多少.V$DB_CACHE_A ...
- 安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中
自定义一个HorizontalScrollView类,主要为了让这个HorizontalScrollView不能鼠标点击,不能左右按键,并且没有焦点. public class ImageMoveHo ...
最新文章
- python列表常用方法
- 移动IM开发指南2:心跳指令详解
- boost::gil::generate_gaussian_kernel用法的测试程序
- c语言程序中的错误可分为,《C语言程序设计(本)》模拟试卷1.doc
- python json转换字典_Python json转字典字符方法实例解析
- ABP虚拟文件系统(VirtualFileSystem)实例------定制菜单栏显示用户姓名
- (一)为什么要在时间序列数据上使用AI?
- 发那科机器人点位编辑_FANUC机器人:参考位置功能介绍与设定方法
- UVA-572-搜索基础题
- python有趣小程序-第一个有趣的python小程序
- unity黑白滤镜_Unity NGUI图片去色黑白效果
- QQ影音播放.flv文件只有声音没有画面解决办法
- POS58 票据热敏打印机,怎么用ESC/POS命令控制打印文字大小?
- 计算机专业监理员工作,监理员是干什么的
- [渝粤教育] 宁波城市职业技术学院 插花艺术 参考 资料
- JAVA集合中常见的List和Map用法
- COLDFUSION
- AndroidIOS APP启动速度专项测试方法
- Codeforces Round #583 E	 Petya and Construction (构造)
- 听见丨哈罗单车完成10亿元人民币D2轮融资,复星领投 场景化AI应用服务公司百可录完成A轮融资