1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > VC6.0中使用ADO操作Access数据库

VC6.0中使用ADO操作Access数据库

时间:2020-09-18 20:22:00

相关推荐

VC6.0中使用ADO操作Access数据库

数据库|mysql教程

VC6.0,使用,ADO,操作,Access,数据库,

数据库-mysql教程

蓝牙开门源码,ubuntu系统版本恢复,tomcat起服务器,日本平台爬虫,php网站开发图,脉脉seolzw

由于我的程序只是简单的储存网址和标题,Access小而简单,所以就选择Access作为本小软件的数据库,并采用ADO访问数据库。 以下数据库内容摘自孙鑫老师的VC20讲第20课数据库访问的PPT 数据库访问技术 1. ODBC(Open Database Connectivity),开放数据库互连。O

安卓五子棋游戏源码,vscode可以java,ubuntu修改系统根目录,neon配置tomcat,sqlite表格直接编辑,js实现前端分页插件,为什么前端要用框架,chrome数据爬虫插件,php 获取html,重庆SEO论坛app,最新极简网盘云盘网站源码,微信网页版模板,动画网站模板html,wordpress欢迎页面,仓库管理系统数据库设计代码,校园便利店小程序lzw

旅游官网源码,ubuntu 电脑配置要求,脚很多的爬虫,php 过滤“,亚马逊seo教程lzw

由于我的程序只是简单的储存网址和标题,Access小而简单,所以就选择Access作为本小软件的数据库,并采用ADO访问数据库。

以下数据库内容摘自孙鑫老师的”VC20讲第20课数据库访问的PPT”

数据库访问技术

1. ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。 ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。

2. DAO(Data Access Object),数据访问对象。DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。

3. RDO(Remote Data Object),远程数据对象。由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),所以,可以为使用关系数据库的应用程序提供更好的性能。

4. OLE DB,对象链接与嵌入数据库。 OLE DB在两个方面对ODBC进行了扩展。首先, OLE DB提供了一个数据库编程的COM接口;第二,OLE DB提供了一个可用于关系型和非关系型数据源的接口。 OLE DB的两个基本结构是OLE DB提供程序(Provider)和OLE DB用户程序(Consumer)。

5. ADO(ActiveX Data Object),ActiveX数据对象,它建立在OLE DB之上。ADO是一个OLE DB用户程序。使用ADO的应用程序都要间接地使用OLEDB。ADO简化了OLE DB,提供了对自动化的支持,使得像VBScript这样的脚本语言也能够使用ADO访问数据库。

ADO的三个核心对象

1.Connection对象

Connection对象表示了到数据库的连接,它管理应用程序和数据库之间的通信。 Recordset和Command对象都有一个ActiveConnection属性,该属性用来引用Connection对象。

mand对象

Command对象被用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。

3.Recordset对象

Recordset对象被用来获取数据。 Recordset对象存放查询的结果,这些结果由数据的行(称为记录)和列(称为字段)组成。每一列都存放在Recordset的Fields集合中的一个Field对象中。

用VC连接Access的方法如下:

1.将msado15.dll动态库拷贝到你应用程序所在的文件夹,msado15.dll一般放在C:/Program Files/CommonFiles/System/ado目录下,你也可以通过Windows的收搜功能进行收搜。

在头文件StdAfx.h中加上#import “msado15.dll” no_namespace rename (“EOF”,“adoEOF”)

因为记录集的结尾是EOF,而文件的结尾也是EOF,所以这里为了避免冲突,将其重新命名为adoEOF。编译程序,这时在你的Debug目录下多出现两 个文件:msado15.tlh和msado15.tli,这是msado15.dll在编译时自动生成的,有时候可以帮助你了解一些函数、常数的含义。

2.初始化ADO并连接数据库

Ado实际上是一个COM组件,所以我们在使用它之前要进行初始化,结束后要卸载。

加上一个成员变量 _ConnectionPtr m_pConnection; //连接数据库的智能指针

// 初始化—连接数据库

// 初始化OLE/COM库环境

::CoInitialize(NULL);

……

hr=m_pConnection.CreateInstance(__uuidof(Connection)); //实例化连接对象

……

m_pConnection->ConnectionString= “Provider=Microsoft.Jet.OLEDB.4.0;DataSource=helper.mdb”; //连接数据库

//如果Access数据库中设置了密码,那么此句应为

//m_pConnection->ConnectionString=”Provider=Microsoft.Jet.OLEDB.4.0;DataSource=helper.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123456″;

还有这里涉及一个字符串过长的问题,该字符串在一行中写不下去,需多行输出。

如CString str=”123456789”; 分两行写为:

Str=”123456”/ //为清楚末尾加 / 在VC中不加也可以,但不要有分号

“789”;

……

m_pConnection->ConnectionTimeout=10; //设置等待连接打开的时间为10秒

hr=m_pConnection->Open(“”,””,””,adConnectUnspecified);//打开连接

……(失败、异常处理)

3.数据库读取、修改、删除

……

CString strSQL=”select * from stock”;

_RecordsetPtr pQueryRecordset;

……

hr=pQueryRecordset.CreateInstance(__uuidof(Recordset));

……

pQueryRecordset->Open(_variant_t(strSQL),m_pConnection.GetInterfacePtr(),

adOpenDynamic,adLockOptimistic,adCmdText); //打开数据库

……

if((pQueryRecordset->BOF)&&(pQueryRecordset->adoEOF))//记录集没有记录

{ …… }

else

{

_variant_t var; CString strValue; int curItem;

……

while(!pQueryRecordset->adoEOF)

{

var = pQueryRecordset->GetCollect(“title”);

strValue = (LPCSTR)_bstr_t(var);

ListCtrl.InsertItem(curItem,strValue);

…… //这里的多少取决你的字段…….

pQueryRecordset->MoveNext();

curItem++;

}

}

……

修改

Recordset->PutCollect(“visit”, (LPCTSTR)visit );

Recordset->Update();

增加

Recordset->AddNew();

Recordset->PutCollect(“visit”, (LPCTSTR)visit );

Recordset->Update();

删除表

strSQL=”delete from stock”;

Recordset->Open(_variant_t(strSQL),_variant_t((IDispatch*)m_pConnection,true),

adOpenStatic,adLockOptimistic,adCmdText);

4.撤消数据库连接,卸载ADO

m_pConnection->Close(); // 释放环境

::CoUninitialize();

另外,由于Access会对你的数据进行排序,所以你读出的数据次序不一定会跟你写进Access时一致。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。