VC++60中用ADO存取Access数据库的一点总结.docVIP

  • 3
  • 0
  • 约5.77千字
  • 约 7页
  • 2017-10-04 发布于重庆
  • 举报

VC++60中用ADO存取Access数据库的一点总结.doc

VC60中用ADO存取Access数据库的一点总结

事情是这样的,我的女朋友想要对日常生活的开销做个记录,以便控制花钱的尺度。看她每日用笔头记录,然后和我抢电脑用,曰:要用附件中的计算器统计结果,每每如此 ,不胜其烦,就给她做了一个个人家庭记帐系统,一劳永逸解决问题。期间用到了ADO操作Access数据库,在网上找了若干关于ADO的资料结合实践总结了一点使用心得如下 ,供有相同需求的朋友参考: 附带了那个个人记帐系统,运行的界面如下: VC++下使用ADO编写数据库程序 准备: (1)、引入ADO类 #import c:\program files\common files\system\ado\msado15.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(); 3.操作一个结果集 (1)、遍历(读取) a)、用pRecordset-adoEOF来判断数据库指针是否已经移到结果集的末尾了;m_pRecordset-BOF判断是否 在第一条记录前面: while(!m_pRecordset-adoEOF) { var = m_pRecordset-GetCollect(Name); if(var.vt != VT_NULL) strName = (LPCSTR)_bstr_t(var); var = m_pRecordset-GetCollect(Age); if(var.vt != VT_NULL) strAge = (LPCSTR)_bstr_t(var); m_AccessList.AddString( strName + -- +strAge ); m_pRecordset-MoveNext(); } b)、取得一个字段的值的办法有两种办法 一是 //表示取得第0个字段的值 m_pRecordset-GetCollect(Name); 或者 m_pRecordset-GetCollect(_variant_t(long(0

文档评论(0)

1亿VIP精品文档

相关文档