Welcome

首页 / 软件开发 / C++ / VC++6.0中用ADO存取Access数据库的总结

VC++6.0中用ADO存取Access数据库的总结2010-02-19querw事情是这样的,我的女朋友想要对日常生活的开销做个记录,以便控制花钱的尺度。看她每日用笔头记录,然后和我抢电脑用,曰:要用附件中的计算器统计结果,每每如此 ,不胜其烦,就给她做了一个个人家庭记帐系统,一劳永逸解决问题。期间用到了ADO操作Access数据库,在网上找了若干关于ADO的资料结合实践总结了一点使用心得如下 ,供有相同需求的朋友参考:

附带了那个个人记帐系统,运行的界面如下:

VC++下使用ADO编写数据库程序

准备:

(1)、引入ADO类#import "c:program filescommon filessystemadomsado15.dll"
no_namespace
rename ("EOF", "adoEOF")
(2)、初始化COM

在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);
CoUnInitialize();
(3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr

1.连接和关闭数据库 (1)连接

例子:连接Access数据库

m_pConnection.CreateInstance(__uuidof(Connection));
try
{
// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Demo.mdb",
"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");
return FALSE;
}
(2)、关闭

//如果数据库连接有效

if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
(3)、设置连接时间 //设置连接时间-----------------------------------pConnection->put_ConnectionTimeout(long(5));2.打开一个结果集

(1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果

_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。jingzhou xu
try
{
m_pRecordset->Open("SELECT * FROM DemoTable",// 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
(2)关闭结果集m_pRecordset->Close();