- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC++6.0中用ADO存取Access数据库的一点总结.doc
VC++6.0 中用 ADO 存取 Access 数据库的一点总结/document/viewdoc/?id=1215
事情是这样的,我的女朋友想要对日常生活的开销做个记录,以便控制花钱的尺度。看她每日用笔头记录,然后和我抢电脑用,曰:要用附件中的计算器统计结果,每每如此 ,不胜其烦,就给她做了一个个人家庭记帐系统,一劳永逸解决问题。期间用到了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和_CommandPtr1.连接和关闭数据库 (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-GetC
您可能关注的文档
最近下载
- 雅马哈s03使用说明书.pdf VIP
- 一种从荧光粉废料中回收高纯度钇铕的制备方法.doc.doc
- 部编版语文二年级上册第六单元教材解读大单元集体备课.pptx VIP
- 压实度(灌砂法)试验检测报告.docx
- 2022年地理高考真题深度剖析之自然灾害1老教材公开课.docx VIP
- 生物法还原高浓度高氯酸盐动力学及反应条件的优化.pdf
- 妇产科常见危急重症早期识别、初步处置原则和转诊时期专家讲座.pptx
- 一种多应力加速寿命试验耦合效应分析及寿命预测方法.pdf VIP
- 医疗器械软件产品相关文档模板汇总(软件描述文档模板、软件网络安全描述模板、软件开发文档等).pdf VIP
- 火电厂工艺办法流程.ppt
文档评论(0)