数据库开发入门:VB+ADO
- 格式:doc
- 大小:209.50 KB
- 文档页数:10
VB6.0使用ADO连接数据库一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。
ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。
ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。
ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。
之所以称为ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。
OLE DB是一组“组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。
OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。
OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。
也就是说,OLE DB 并不局限于 ISAM、Jet 甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。
在实际应用中,这种多样性意味着可以访问驻留在 Excel 电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如Microsoft Exchange 中的数据。
但是,OLE DB 应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。
您需要的API 应该是一座连接应用程序和OLE DB 的桥梁,这就是ActiveX Data Objects (ADO)。
二、VB6.0实现方法本文将ADO封装为clsADO类模块(本文附件),具体定义如下:属性:(无)方法:Sub SetConnectionString(ByVal ConnectionString As String) 设置连接数据的连接字符串,亦可在OpenDB方法中指定。
在VB6.0数据库程序开发中使用ADO 和SQL关键词:ADO SQL数据库1.引言在VB的应用程序开发中,访问数据库的方法可归纳为两种。
一种是通过DAO 或AD O的数据源对表中的数据进行直接操作,另一种是通过标准的SQL语句结合Connection 对象对数据库中的数据进行操作,对表中的数据进行检索和统计。
DAO是Visual Basic 5.0使用的数据访问技术,它在用于访问MDB文件格式的数据库时有较高的效率,但访问如Oracle或SQL Server这样的非MDB文件格式的数据库时,因它基于Access/Jet数据库引擎,访问速度会大大降低。
所以Visual Basic 6.0推出了ADO 技术。
ADO中文含意是ActiveX数据对象(ActiveX Data Object),它是一种面向对象的接口。
ADO访问数据库是通过访问OLEDB使用程序和OLE DB供给程序来进行的,它在封装OLE DB的程序中使用了大量的C OM接口,是一种高层的访问技术。
它在继承OLE DB的同时,大大简化了OLE DB的操作。
此外,ADO技术可以以ActiveX控件的形式出现,被广泛应用于Microsoft ActiveX页、Visual C++ 和Visual Basic的编程。
SQL是管理关系数据库系统的标准语言。
每一种关系数据库如Access、SQL Server、Oracle 等都有它自己特有的SQL语言,但它们都支持像select、insert、update、delete、create、drop等标准语句来完成几乎所有的对数据库的操作.本文就ADO 和SQL的用法做一些探讨。
2.开发原型我们为计算机产品经销商开发一个进销存的程序。
用MS Access 数据库,创建的数据库名叫ware.mdb. 在这个数据库中,建立表1,表2,表3,表4。
表1 商品明细表:wareDetail商品编号商品名称单价厂商库存wareID(ch10) wareName(ch30) wPrice(Money) manifest(ch40) numInLib(int)表2 流水账wAccount商品编号进货数出货数日期wareID(ch10) wQuantity(int) wSold(int) wDate(date)表3库存表wLib总库存数总库存金额TotalNum(int) TotalMoney(Money)表4临时表wInOut进货数出货数Quantity, Sold3.ADO的使用方法.ADO2.0存在于Visual Basic 6.0的两个独立的库中第一个称为ADODB,在Referen ces对话框中的名字是Microsoft ActiveX Data Objects 2.0 Library在这个库中包含了所有的ADO对象。
VB环境下ADO数据库开发技术摘要:ado技术是常用的数据库开发技术,vb6.0是简单易用的开发工具,基于vb6.0环境,采用ado技术对数据库进行开发和维护适用于小型数据库的管理。
本文从对象的定义、记录集的操作等方面对其应用进行了阐述。
关键词:ado vb 数据库0 引言数据库管理工具有多种,其中,access是微软开发的面向小型数据库管理的易用工具,其结构由各种数据表组成,每个表有若干字段,从而每个表中可以存放若干记录集。
微软的vb6.0 提供了多种开发数据库的技术,其中ado(activex data object)开发技术提供了一种对数据库程序简单的高层访问接口。
ado技术访问数据库相对于其他方式而言速度快,更加灵活,编程相对简单,应用更加广泛。
1 ado对象概述ado对象包括连接对象、命令对象、记录集对象、域对象、参数对象、属性对象、错误对象等。
其中,连接对象用于应用程序和数据源的连接,一个连接对象可以由多个命令或者记录集对象来使用;命令对象主要有执行命令函数execute等;记录集对象包含了从数据源返回的所有行及其中的表示各个列的域对象集合。
记录集对象是常用的ado对象,主要包括记录集移动函数、记录集打开及关闭函数、创建新纪录函数、删除及更新函数等。
2 vb中数据库相关控件简介vb6.0提供了多种控件,可以方便地使用ado技术进行数据库维护,主要控件包括adodc6.0及datagrid6.0等数据库控件及数据显示控件,combox和textbox控件也可以通过属性设置与adodc控件关联。
相关控件如图1所示。
3 vb6.0环境中数据库应用实例本实例针对用户登录、注册及注销进行操作,步骤如下:3.1 界面及数据库设计在登录界面,用到adodc数据库控件、combox控件及commandbutton控件等,界面如图2所示。
其中,adodc控件在使用前需要从vb环境的组件库调入。
用access2003创建数据库,数据库命名为test.mdb,并创建一个表,命名为“users”,其结构如图3所示。
第七章数据库访问控件ADO7.1 ADO控件Visual Basic中可用的数据访问接口有三种:ActiveX数据对象(ActiveX Data Objects,ADO)、远程数据对象(RDO)和数据访问对象(DAO)。
这三种接口的每一种都分别代表了数据访问技术的不同发展阶段。
最新的是ADO,它是比RDO和DAO更加简单,然而更加灵活的对象模型。
目前,通常使用ADO作为数据访问接口。
图7-1 ADO数据存取控件ActiveX 数据对象拥有与其对应的可视化控件ADO Data控件(ADODC)。
可视化的ADODC具有“向前”和“向后”等按钮,因此易于使用。
ADO数据控件并非VB的标准控件,使用之前先要将ADODC加入工具箱图7-2 添加新部件右键单击工具箱空白处,选择“部件(O)…”命令。
系统弹出“部件”窗口,从“控件”选项卡中找到“Microsoft ADO Data Control 6.0 (OLEDB)”,选中并单击“确定”按钮。
于是,工具箱中将出现ADO控件图标。
图7-3 添加ADO控件7.2 使用ADO控件创建一个简单的前端数据库应用程序实例CH7-1 浏览联系人使用ADODC创建浏览联系人的界面,后台数据库使用ACCESS 2003“联系人示例数据库”Contact.mdb。
第1步:窗体上放置一个ADO Data 控件,命名为ADODC1。
第2步:在设计界面选定ADODC1,然后按F4键显示“属性”窗口。
第3步:在“属性”窗口中,单击“ConnectionString”显示属性设置对话框。
选中“使用连接字符串”,单击按钮,选择“Microsoft Jet 4.0 OLE DB Provider”,单击,在“连接”选项卡中选择数据库文件名。
如果数据库文件与当前的应用程序在同一个路径下,则可以省略路径名。
单击,如果数据库文件路径和格式正确,系统提示“测试连接成功。
”第4步:在“属性”窗口中,将“CommandType”(命令类型)属性设置为“2 -AdCmdTable”第5步:在“属性”窗口中,打开“RecordSource”(记录源)属性设置对话框,“表或存储过程名称”选择“联系人”表第6步:在窗体上放置三个“文本框”控件,用来显示数据库信息。
1引言目前在Visual Basic中开发数据库程序主要有D A O、R D O、A D O、O D B C四种数据库开发技术。
其中最流行的是A D O。
它是基于全新的O L E D B 技术。
O D B C本身是以SQL Server、Oracle等关系数据库作为访问对象;O L E D B则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的技术。
O L E D B不能从V B直接进行访问,但可以通过称为A D O的C O M 接口对它进行访问。
A D O也是开发基于W e b数据库应用软件的最佳手段。
A D O编程主要有两种方式,一种是A D O控件编程,即在程序的窗体当中必须添加A D O控件,然后通过调用A D O控件的属性和方法来进行编程。
但在开发大型数据库的时候,很少直接使用A D O控件来进行编程,而是在程序中调用A D O的对象即Connection、RecordSet等进行编程。
2基本原理A D O编程接口包括6个重要的对象,具体如下。
Connection(连接:这个接口表示正在使用的数据源和A D O接口之间的连接。
任何与数据源有交互连接的A D O都可能导致一个或多个从数据源返回的错误,因此C o n-nection接口包含了产生所有错误的接口。
E r r o r(错误集:这个接口表示一个由数据源返回的错误。
相对于Connection的错误集,Error更具体。
可以利用一个Error 来判读出错的准确原因。
C o m m a n d(命令:这个接口表示一个能被数据提供者处理的命令。
C o m m a n d接口可以返回一个R e c o r d S e t记录集或执行一个动作(如查询、修改、删除或插入。
任何时候查询或存储过程能接收的数据都能通过Parameter接口传给它。
Parameter(参数:这个接口表示传给C o m m a n d的参数。
Visual C ADO数据库编程入门ADO 是目前在Windows环境中比较流行的客户端数据库编程技术。
ADO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。
而且按微软公司的意图,OLE DB和ADO将逐步取代ODBC和DAO。
现在介绍ADO各种应用的文章和书籍有很多,本文着重站在初学者的角度,简要探讨一下在VC++中使用ADO编程时的一些问题。
我们希望阅读本文之前,您对ADO技术的基本原理有一些了解。
一、在VC++中使用ADO编程ADO实际上就是由一组Automation对象构成的组件,因此可以象使用其它任何Automation对象一样使用ADO。
ADO中最重要的对象有三个:Connection、Command和R ecordset,它们分别表示连接对象、命令对象和记录集对象。
如果您熟悉使用MFC中的ODBC类(CD atabase、CRecordset)编程,那么学习ADO编程就十分容易了。
使用ADO编程时可以采用以下三种之一:1、使用预处理指令#import#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \no_namespace rename("EOF", "EndOfFile")但要注意不能放在stdAfx.h文件的开头,而应该放在所有include指令的后面。
否则在编译时会出错。
程序在编译过程中,VC++会读出msado15.dll中的类型库信息,自动产生两个该类型库的头文件和实现文件msado15.tlh和msado15.tli(在您的Debug或Release目录下)。
在这两个文件里定义了ADO的所有对象和,以及一些枚举型的常量等。
1引言目前在Visual Basic中开发数据库程序主要有D A O、R D 0、A D O、O DBC四种数据库开发技术。
其中最流行的是AD0。
它是基于全新的O L E D B 技术。
O D B C本身是以SQL Server、Oracle等关系数据库作为访问对象;0 L ED B则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的技术。
O LE D B不能从V B直接进行访问,但可以通过称为A D O的C O M接口对它进行访问。
A D O也是开发基于W e b数据库应用软件的最佳手段。
A D O编程主要有两种方式,一种是A D O控件编程,即在程序的窗体当中必须添加A D O控件,然后通过调用A D O控件的属性和方法来进行编程。
但在开发大型数据库的时候,很少直接使用A D O控件来进行编程,而是在程序中调用A D O的对象即Connection、RecordSet等进行编程。
2基本原理A D O编程接口包括6个重要的对象,具体如下。
Connection连接:这个接口表示正在使用的数据源和A D O接口之间的连接。
任何与数据源有交互连接的ADO都可能导致一个或多个从数据源返回的错误,因此C o n-nection接口包含了产生所有错误的接口。
E r r o r(错误集:这个接口表示一个由数据源返回的错误。
相对于Conn ection 的错误集,Error更具体。
可以利用一个Error来判读出错的准确原因。
C o m m a n d(命令:这个接口表示一个能被数据提供者处理的命令。
C o m m an d接口可以返回一个R e c o r d S e ti记录集或执行一个动作(如查询、修改、删除或插入。
任何时候查询或存储过程能接收的数据都能通过Parameter接口传给它Parameter参数:这个接口表示传给C o m m a n d的参数。
ADO是ActiveX Data Objects 的缩写,是⼀项新的数据库的存取技术。
相对于VB5.0中的DAO他具有更为简化的对象模型,⽆论是存取本地的还是远程的数据,都提供了⼀致的接⼝.就我本⼈⽽⾔,ADO的确⽐DAO要好⽤得多。
今天只就ADO的对象模型谈⼀谈.ADO定义了⼀个可编程的对象集合.ADO对象模型如图所⽰: 对于ADO其中对象来说,我觉得⽐较重要的是:Command,Connection,Recordset对象。
虽然严格的说这是不准确的,但根据我的实际经验确实如此.下⾯就分别来谈⼀下。
(1) Connection对象 Connection对象⽤于建⽴与数据库的连接.通过连接可从应⽤程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息. (2) Command对象 在建⽴Connection后,可以发出命令操作数据源.⼀般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进⾏数据查询.Command对象在定义查询参数或执⾏⼀个有输出参数的存储过程时⾮常有⽤。
(3) Recordset对象 Recordset对象只代表⼀个记录集,这个记录集是⼀个连接的数据库中的表,或者是Command对象的执⾏结果返回的记录集.在ADO对象模型中,是在⾏中检查和修改数据的最主要的⽅法,所有对数据的操作⼏乎都是在Recordset对象中完成的.Record对象⽤于指定⾏,移动⾏,添加,更改,删除记录。
下⾯就具体地说说如何⽤ADO存取数据: 在实际编程过程中使⽤ADO的⼀个典型的存取数据的步骤为: (1) 连接数据源 (2) 打开记录集对象 (3) 使⽤记录集 (4) 断开连接 那么具体怎么是⽤呢?分别来看。
(我在最后将给出⼀个完整的使⽤ADO的实例给⼤家参考.) (1) 如何连接数据源 利⽤Connection对象可以创建⼀个数据源的连接.应⽤的⽅法是Connection对象的Open⽅法。
在VB中常用的数据库访问接口有三种,即DAO、RDO、ADO 三种对象模式。
三种模式的具体解释见上篇文章:DAO/RDO/ADO,ODBC,OLEDB之间的关系本篇文章我们重点介绍一下ADO的应用。
一:ADO的简介ADO(ActiveX Data Object)是由微软公司开发的最新的数据库访问接口技术,因为ADO技术对OLEDB(Object Link and Embedding DataBase)进行了封装并实现了OLEDB所有的功能,所以ADO通过OLEDB可以访问任何类型的数据源,并且减少了编程量。
ADO访问数据库的体系可以概括为:二:基本流程:ADO访问数据库的目标是访问、编辑和更新数据源,因此使用ADO进行数据访问时,一般需要经过一下步骤:(1)创建一个数据源的连接,连接数据库。
Set objCn = NewConnectionstrcn ="provider=microsoft.jet.oledb.4.0;persist security info=false;" &_"data source=" &App.Path & "\实例1.mdb" objCn.ConnectionString = strcnobjCn.Open(2)设置一个命令来访问数据源的数据。
(3)执行命令。
Set objCmd = New CommandSet objCmd.ActiveConnection = objCnWith objCmd.CommandText = "select * from 系统用户where 用户名 like ?" & "and 身份 like ?".CommandType = adCmdTextEnd WithDim Parm As New ParameterSet Parm =objCmd.CreateParameter("用户名", adVarChar, adParamInput, 10)objCmd.Parameters.Append ParmSet Parm =objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)objCmd.Parameters.Append Parm(4)如果命令的执行导致返回数据库中表的某些行,则将他们保存在缓存中,产生相应的数据集对象,以便对其进行操作。
第七章数据库访问控件ADO
7.1 ADO控件
Visual Basic中可用的数据访问接口有三种:ActiveX数据对象(ActiveX Data Objects,ADO)、远程数据对象(RDO)和数据访问对象(DAO)。
这三种接口的每一种都分别代表了数据访问技术的不同发展阶段。
最新的是ADO,它是比RDO和DAO更加简单,然而更加灵活的对象模型。
目前,通常使用ADO作为数据访问接口。
图7-1 ADO数据存取控件
ActiveX 数据对象拥有与其对应的可视化控件ADO Data控件(ADODC)。
可视化的ADODC具有“向前”和“向后”等按钮,因此易于使用。
ADO数据控件并非VB的标准控件,使用之前先要将ADODC加入工具箱
图7-2 添加新部件
右键单击工具箱空白处,选择“部件(O)…”命令。
系统弹出“部件”窗口,从“控件”选项卡中找到“Microsoft ADO Data Control 6.0 (OLEDB)”,选中并单击“确定”按钮。
于
是,工具箱中将出现ADO控件图标。
图7-3 添加ADO控件
7.2 使用ADO控件创建一个简单的前端数据库应用程序
实例CH7-1 浏览联系人
使用ADODC创建浏览联系人的界面,后台数据库使用ACCESS 2003“联系人示例数据库”Contact.mdb。
第1步:窗体上放置一个ADO Data 控件,命名为ADODC1。
第2步:在设计界面选定ADODC1,然后按F4键显示“属性”窗口。
第3步:在“属性”窗口中,单击“ConnectionString”显示属性设置对话框。
选中“使用连接字符串”,单击按钮,
选择“Microsoft Jet 4.0 OLE DB Provider”,单击,在“连接”选项卡中选择数据库文件名。
如果数据库文件与当前的应用程序在同一个路径下,则可以省略路径名。
单击,如果数据库文件路径和格式正确,系统提示“测试连接成功。
”第4步:在“属性”窗口中,将“CommandType”(命令类型)属性设置为“2 -AdCmdTable”第5步:在“属性”窗口中,打开“RecordSource”(记录源)属性设置对话框,“表或存储过程名称”选择“联系人”表
第6步:在窗体上放置三个“文本框”控件,用来显示数据库信息。
在“属性”窗口中,将三个文本框的“数据源”属性设为ADO Data 控件的名称(ADODC1)。
这样
就可将这个文本框和ADO Data控件绑定在一起。
三个文本框控件的“DataField”
(数据字段)属性分别设置为“姓氏”、“名字”和“办公电话”。
由于三个文本
框分别与数据库中的字段绑定在一起,为了防止用户意外修改记录,通常将文本
框的Locked属性设为True。
第7步:运行该应用程序。
用户可以在ADO Data 控件使用四个箭头按钮浏览所有记录。
需要说明的是,“RecordSource”(记录源)属性也可以使用“命令文本”,即SQL语句。
为此,只要将以上“第4步”和“第5步”应换成如下过程即可。
第4步:在“属性”窗口中,将“CommandType”(命令类型)属性设置为“2 -AdCmdText”。
第5步:在“属性”窗口中,打开“RecordSource”(记录源)属性设置对话框,“命令
文本(SQL)”中填入如下SQL语句“select * from联系人”
7.3 操作数据表中的记录
实例CH7-2 添加系统用户
使用ADODC控件向数据库文件mydb.mdb中的sysuser表添加新记录。
第1步:界面设计如下,
第2步:ADODC控件命名为ADODC1,参照实例CH7-1中的第3步至第5步连接到数据库mydb.mdb并以sysuser表作为数据源(使用SQL语句或表均可)。
第3步:四个文本框的Locked属性设置为True,然后绑定数据源,即DataSource属性设为ADODC1,DataField属性分别设为字段名sysuser的secondname、firstname、pid 和power。
第4步:“添加新用户”按钮代码如下,
实例CH7-3 删除系统用户
使用ADODC控件删除数据库文件mydb.mdb的sysuser表中已经存在的用户。
第1步:在实例CH7-2的基础上添加一个“删除老用户”按钮,界面设计如下,
第2步: “删除老用户”按钮的代码如下,
实例CH7-4 设置用户密码
使用ADODC 控件修改数据库文件mydb.mdb 的sysuser 表中用户的信息。
第1步:
在实例CH7-3的基础上添加一个“设置密码”的按钮,界面设计如下,
第2步:
“设置密码”按钮的代码如下,
7.4 执行查询
实例CH7-5 查询联系人
使用ADODC 查询联系人,数据库使用ACCESS 2003“联系人示例数据库”Contact.mdb 。
第1步:
在实例CH7-1
中新增“按姓氏查询”和“按名字查询”两个按钮,分别命名为
cmdFindSecondName和cmdFindFirstName界面设计如下,
第2步:这两个按钮的单击事件填写如下代码,
7.5 综合实例
实例CH7-6 查询客户订单
数据库使用ACCESS2003的示例数据库“罗斯文数据库(Northwind.mdb)”,界面设计如下,
该数据库结构如下图所示:
核心代码如下:
Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
Adodc1.Caption = "第" & Adodc1.Recordset.AbsolutePosition & _
"条记录共" & Adodc1.Recordset.RecordCount & "条记录"
End Sub
Private Sub Combo1_Click()
Adodc1.RecordSource = "SELECT 产品.产品名称, 订单明细.单价, 订单明细.数量, 订单明细.折扣, " + _ " [订单明细]![单价]*[订单明细]![数量]*(1-[订单明细]![折扣]) AS 金额, 客户.公司名称" + _
" FROM 客户INNER JOIN (订单INNER JOIN" + _
" (产品INNER JOIN 订单明细ON 产品.产品ID = 订单明细.产品ID)" + _
" ON 订单.订单ID = 订单明细.订单ID) ON 客户.客户ID = 订单.客户ID" + _
" WHERE 客户.公司名称= '" + Combo1.Text + "'"
Adodc1.Recordset.Requery
Adodc1.Refresh
End Sub
Private Sub Form_Load()
Adodc1.RecordSource = "select * from 客户"
Adodc1.Recordset.Requery
Adodc1.Refresh
Combo1.Clear
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
Combo1.AddItem Adodc1.Recordset.Fields("公司名称")
Adodc1.Recordset.MoveNext
Loop
Combo1.ListIndex = 0
Adodc1.RecordSource = "SELECT 产品.产品名称, 订单明细.单价, 订单明细.数量, 订单明细.折扣, " + _ " [订单明细]![单价]*[订单明细]![数量]*(1-[订单明细]![折扣]) AS 金额, 客户.公司名称" + _
" FROM 客户INNER JOIN (订单INNER JOIN" + _
" (产品INNER JOIN 订单明细ON 产品.产品ID = 订单明细.产品ID)" + _
" ON 订单.订单ID = 订单明细.订单ID) ON 客户.客户ID = 订单.客户ID" + _
" WHERE 客户.公司名称= '" + Combo1.Text + "'"
Adodc1.Recordset.Requery
Adodc1.Refresh
End Sub。