欢迎来到天天文库
浏览记录
ID:39914287
大小:101.02 KB
页数:7页
时间:2019-07-14
《VC++6.0中用ADO存取Access数据库的一点总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、事情是这样的,我的女朋友想要对日常生活的开销做个记录,以便控制花钱的尺度。看她每日用笔头记录,然后和我抢电脑用,曰:要用附件中的计算器统计结果,每每如此,不胜其烦,就给她做了一个个人家庭记帐系统,一劳永逸解决问题。期间用到了ADO操作Access数据库,在网上找了若干关于ADO的资料结合实践总结了一点使用心得如下,供有相同需求的朋友参考:附带了那个个人记帐系统,运行的界面如下:VC++下使用ADO编写数据库程序准备:(1)、引入ADO类#import"c:programfilescommonfilessystemadomsado15.dll"o_n
2、amespacerename("EOF","adoEOF")(2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);CoUnInitialize();(3)#import包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr1.连接和关闭数据库(1)连接例子:连接Access数据库m_pConnection.CreateInstance(__uuidof(Connection));try{//打开本地Access库Demo.mdbm_pConn
3、ection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Demo.mdb","","",adModeUnknown);}catch(_com_errore){AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");returnFALSE;}(2)、关闭//如果数据库连接有效if(m_pConnection->State)m_pConnection->Close();m_pConnection=NULL;(3)、设置连接时间//设置连接时间-------------
4、----------------------pConnection->put_ConnectionTimeout(long(5));2.打开一个结果集(1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance(__uuidof(Recordset));//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,//因为它有时会经常出现一些意想不到的错误。jingzhouxutry{m_pRecor
5、dset->Open("SELECT*FROMDemoTable",//查询DemoTable表中所有字段m_pConnection.GetInterfacePtr(),//获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);}catch(_com_error*e){AfxMessageBox(e->ErrorMessage());}(2)关闭结果集m_pRecordset->Close();3.操作一个结果集(1)、遍历(读取)a)、用pRecordset->adoEOF来判断数据库指针是否已经
6、移到结果集的末尾了;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_
7、pRecordset->MoveNext();}b)、取得一个字段的值的办法有两种办法一是//表示取得第0个字段的值m_pRecordset->GetCollect("Name");或者m_pRecordset->GetCollect(_variant_t(long(0));二是pRecordset->get_Collect("COLUMN_NAME");或者pRecordset->get_Collect(long(index));(2)、添加a)、调用m_pRecordset->AddNew();b)、调用m_pRecordset->PutCollect();
8、给每个字段赋值c)、调用
此文档下载收益归作者所有