铜包钢金具预绞丝:vc2005 ado数据库封装类
来源:百度文库 编辑:偶看新闻 时间:2024/05/01 01:02:08
/*******************************************************************************
文件名称 : Ado.h 头文件
作 者 : 杨治忠
创建时间 : 2011-1-21 9:25:22
文件描述 : 简单的ADO操作Access2003和Access2007的封装类
版权声明 : 对其他类型数据库的链接暂时没加 QQ:940446982
修改历史 : 杨治忠 2011-1-21 1.00 初始版本
*******************************************************************************/
//注:构造函数已经将智能指针初始化,并在析构函数注销,要用到智能指针操作数据库时,只能用对应的对象调用类的智能指针
#pragma once
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
class CAdo
{
public:
CAdo(void);
public:
~CAdo(void);
public:
//连接指针
_ConnectionPtr m_pConnection; //命令执行指针
_CommandPtr m_pCommand; //结果集指针
_RecordsetPtr m_pRecordset;
public:
//链接数据库
void LinkDatabase(CString str_dbmsname,CString str_dbmstype);
//打开数据库表
void OpenTheTable(CString str_tablename);
//关闭表
void ClossTheTable();
};/*******************************************************************************
文件名称 : Ado.cpp 实现文件
作 者 : 杨治忠
创建时间 : 2011-1-21 9:22:41
文件描述 : 简单的ADO操作Access2003和Access2007的封装类
版权声明 : 对其他类型数据库的链接暂时没加 QQ:940446982
修改历史 : 杨治忠 2011-1-21 1.00 初始版本
*******************************************************************************/
#include "StdAfx.h"
#include "Ado.h"
/********************************************************************
函数名称 : CAdo(void)
函数描述 : 构造函数
输入参数 : void
备注 : 自动创建智能指针对象
*********************************************************************/
CAdo::CAdo(void)
{
//OLE/COM初始化
if(!AfxOleInit())
{
AfxMessageBox(_T("OLE/COM初始化错误"));
}
//创建智能指针对象
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));
}
/********************************************************************
函数名称 : ~CAdo(void)
函数描述 : 析构函数
输入参数 : void
备注 : 自动关闭记录集和链接并销毁智能指针
*********************************************************************/
CAdo::~CAdo(void)
{
if(m_pRecordset->State!=adStateClosed)
m_pRecordset->Close();
m_pRecordset = NULL; if(m_pCommand->State!=adStateClosed)
m_pCommand->Release();
m_pCommand = NULL; if(m_pConnection->State!=adStateClosed)
m_pConnection->Close();
m_pConnection = NULL;
}
/********************************************************************
函数名称 : LinkDatabase()
函数描述 : 链接数据库
输入参数 : 数据库名字 str_dbmsname;数据库的类型和版本 str_dbmstype
str_dbmstype可以是Access2007,Access2003;
备注 :
*********************************************************************/
void CAdo::LinkDatabase(CString str_dbmsname,CString str_dbmstype)
{
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。
try
{ CString str_conn;
if (str_dbmstype==_T("Access2007"))
{
str_conn.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s.accdb"),str_dbmsname);
}
if (str_dbmstype==_T("Access2003"))
{
str_conn.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s.mdb"),str_dbmsname);
}
// 打开本地Access库
m_pConnection->Open((_bstr_t)str_conn,"","",adModeUnknown); }
catch(_com_error e)
{
AfxMessageBox(_T("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"));
}
}
/********************************************************************
函数名称 : OpenTheTable()
函数描述 : 打开数据库的表(打开记录集)
输入参数 : 表的名字 str_tablename
备注 : 再次打开任何表时记得先关闭多次打开会出错
*********************************************************************/
void CAdo::OpenTheTable(CString str_tablename)
{
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。
try
{
CString str_conn;
str_conn.Format(_T("SELECT * FROM %s"),str_tablename);
m_pRecordset->Open((_bstr_t)str_conn, // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
/********************************************************************
函数名称 : ClossTheTable()
函数描述 : 关闭表(关闭记录集集)
输入参数 : void
备注 : 虽然析构函数有自动关闭,但打开与关闭必须配对,这里只是关闭,
不能让m_pRecordset=NULL,销毁指针由析构函数负责
*********************************************************************/
void CAdo::ClossTheTable()
{
if(m_pRecordset->State != adStateClosed)
m_pRecordset->Close();}
文件名称 : Ado.h 头文件
作 者 : 杨治忠
创建时间 : 2011-1-21 9:25:22
文件描述 : 简单的ADO操作Access2003和Access2007的封装类
版权声明 : 对其他类型数据库的链接暂时没加 QQ:940446982
修改历史 : 杨治忠 2011-1-21 1.00 初始版本
*******************************************************************************/
//注:构造函数已经将智能指针初始化,并在析构函数注销,要用到智能指针操作数据库时,只能用对应的对象调用类的智能指针
#pragma once
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
class CAdo
{
public:
CAdo(void);
public:
~CAdo(void);
public:
//连接指针
_ConnectionPtr m_pConnection; //命令执行指针
_CommandPtr m_pCommand; //结果集指针
_RecordsetPtr m_pRecordset;
public:
//链接数据库
void LinkDatabase(CString str_dbmsname,CString str_dbmstype);
//打开数据库表
void OpenTheTable(CString str_tablename);
//关闭表
void ClossTheTable();
};/*******************************************************************************
文件名称 : Ado.cpp 实现文件
作 者 : 杨治忠
创建时间 : 2011-1-21 9:22:41
文件描述 : 简单的ADO操作Access2003和Access2007的封装类
版权声明 : 对其他类型数据库的链接暂时没加 QQ:940446982
修改历史 : 杨治忠 2011-1-21 1.00 初始版本
*******************************************************************************/
#include "StdAfx.h"
#include "Ado.h"
/********************************************************************
函数名称 : CAdo(void)
函数描述 : 构造函数
输入参数 : void
备注 : 自动创建智能指针对象
*********************************************************************/
CAdo::CAdo(void)
{
//OLE/COM初始化
if(!AfxOleInit())
{
AfxMessageBox(_T("OLE/COM初始化错误"));
}
//创建智能指针对象
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));
}
/********************************************************************
函数名称 : ~CAdo(void)
函数描述 : 析构函数
输入参数 : void
备注 : 自动关闭记录集和链接并销毁智能指针
*********************************************************************/
CAdo::~CAdo(void)
{
if(m_pRecordset->State!=adStateClosed)
m_pRecordset->Close();
m_pRecordset = NULL; if(m_pCommand->State!=adStateClosed)
m_pCommand->Release();
m_pCommand = NULL; if(m_pConnection->State!=adStateClosed)
m_pConnection->Close();
m_pConnection = NULL;
}
/********************************************************************
函数名称 : LinkDatabase()
函数描述 : 链接数据库
输入参数 : 数据库名字 str_dbmsname;数据库的类型和版本 str_dbmstype
str_dbmstype可以是Access2007,Access2003;
备注 :
*********************************************************************/
void CAdo::LinkDatabase(CString str_dbmsname,CString str_dbmstype)
{
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。
try
{ CString str_conn;
if (str_dbmstype==_T("Access2007"))
{
str_conn.Format(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s.accdb"),str_dbmsname);
}
if (str_dbmstype==_T("Access2003"))
{
str_conn.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s.mdb"),str_dbmsname);
}
// 打开本地Access库
m_pConnection->Open((_bstr_t)str_conn,"","",adModeUnknown); }
catch(_com_error e)
{
AfxMessageBox(_T("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"));
}
}
/********************************************************************
函数名称 : OpenTheTable()
函数描述 : 打开数据库的表(打开记录集)
输入参数 : 表的名字 str_tablename
备注 : 再次打开任何表时记得先关闭多次打开会出错
*********************************************************************/
void CAdo::OpenTheTable(CString str_tablename)
{
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。
try
{
CString str_conn;
str_conn.Format(_T("SELECT * FROM %s"),str_tablename);
m_pRecordset->Open((_bstr_t)str_conn, // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
/********************************************************************
函数名称 : ClossTheTable()
函数描述 : 关闭表(关闭记录集集)
输入参数 : void
备注 : 虽然析构函数有自动关闭,但打开与关闭必须配对,这里只是关闭,
不能让m_pRecordset=NULL,销毁指针由析构函数负责
*********************************************************************/
void CAdo::ClossTheTable()
{
if(m_pRecordset->State != adStateClosed)
m_pRecordset->Close();}
ado访问access数据库
vb ado连接数据库
ado验证数据库密码
delphi ado 连数据库
关于ADO封装的问题!急。
什么是封装数据库?
用ADO连接SQL数据库
关于用ADO操作数据库
关于访问数据库的ADO
vc用ADO连接数据库
ADO连接数据库登陆失败原因
在VB中用ADO控件连接数据库
ado中可不可以2次打开数据库
VC+ADO+SQLServer连接数据库的语句
VB编程ADO,数据库用access
在asp中使用ado怎样压缩access数据库?
PHP中用ADO,如果数据库中是空值怎么判断?
ADO.NET中几个数据库处理的核心对象
如何实现VC++连接ADO数据库,进行远程数据库连接
ado .net 中如何得到当前数据库的记录指针
请问有哪位比较懂VC ADO数据库编程的!
Ado.net连数据库的语句名词解释的问题
怎么在c++builder中用ado连接sqlserver数据库
在VB 中如何用ADO连接数据库