当前位置:首页 > C++编程常用模块
C++编程常用模块(二):连接Access数据库
二、连接数据库 (Access 2000) 1、在.h文件中导入动态链接库
#import \rename(\ 类定义: class ADOConn { public:
BOOL ExecuteSQL(_bstr_t bstrSQL);
ADOConn(); virtual ~ADOConn();
//添加一个指向Connection对象的指针 _ConnectionPtr m_pConnection; //添加一个指向Recordset对象的指针 _RecordsetPtr m_pRecordset;
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); void ExitConnect(); void OnInitADOConn(); };
2、建立连接
void ADOConn::OnInitADOConn() {
//初始化OLE/COM库环境 ::CoInitialize(NULL); try
{
char filepath[MAX_PATH];
GetModuleFileName(NULL,filepath,MAX_PATH); CString strdb;
strdb = ExtractFilePath(filepath) + \ strdb = \
//创建connection对象
m_pConnection.CreateInstance(\ m_pConnection->ConnectionTimeout=3; //设置连接字符串,两种都可以
//_bstr_t strConnect=\Source=sm.mdb\
_bstr_t strConnect=\(*.mdb)};uid=;pwd=sm;\
strConnect = strConnect + strdb;
//SERVER和UID,PWD的设置根据实际情况来设置 m_pConnection->Open(strConnect,\ }
//捕捉异常
catch(_com_error e)
{
//显示错误信息
AfxMessageBox(e.Description()); } }
3、执行SQL语句 //仅执行,无返回
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL) {
try {
//是否已连接数据库 if(m_pConnection==NULL) OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText); return true; }
catch(_com_error e) {
e.Description(); return false; } }
//返回记录集
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL) { try {
if(m_pConnection==NULL) OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e) {
e.Description(); }
return m_pRecordset; }
4、关闭连接
void ADOConn::ExitConnect() {
//关闭记录集和连接 if(m_pRecordset!=NULL) {
m_pRecordset->Close(); m_pRecordset=NULL; }
共分享92篇相关文档