ADO数据库访问技术

2024-09-04

ADO数据库访问技术(共7篇)

ADO数据库访问技术 篇1

0 引言

ASP.NET是Microsoft.NET平台下的一部分。它实现了Web应用程序的快速开发。其中连接数据库的主流技术是通过ADO.NET或ADO实现的。本文基于ASP.NET框架,介绍ADO和ADO.NET两种数据库访问技术,然后就进行分析和研究。

1 ADO技术简介

1.1 ADO技术

Active X Data Objects(ADO)是微软的一种数据访问技术。它被设计用来和数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Univer-sal Data Access)。OLE DB是一个低层的数据访问接口,并基于微软公司的COM技术,用它可以访问各种数据源,其模型如图1所示。ADO的3个主要组成对象是:Connection、Record Set和Command。

(1)Connection对象:用于表示和数据源的连接,以及处理一些命令和事物。

(2)Command对象:用于执行某些命令来进行诸如查询、修改数据库结构的操作,并将返回结果存在Recordset对象中。也可以进行批操作和操纵数据库的结构,当然,这需要使用的OLE DB Provider提供相应的支持。此外,可以将一个激活的Connection对象绑定到Command对象的Active Connection属性,这使得多个Command对象实例可以共用一个Connection对象。

(3)Record Set对象:用于处理数据源的表格集,它是在表中修改、检索数据的最主要的方法。这些结果由数据的行(记录)和列(字段)组成。

ADO的几个对象间的关系结构图如图2所示。

使用ADO访问数据元的特点可以概括如下:

(1)易于使用,可以说这是ADO最重要的特点之一。

(2)ADO是高层数据库访问技术,相对与ODBC来说,具有面向对象的特点。

(3)在ADO对象结构中,对象与对象之间的层次结构不是非常明显,这会给编写数据库程序带来更多的便利。比如,在应用程序中如果要使用记录集对象,不一定要先建立连接、回话对象,如果需要就可以直接构造记录集对象。

(4)可以访问多种数据源。和OLE DB一样,使应用程序具有很好的通用性和灵活性。

1.2 ASP.NET中使用ADO数据库访问技术

在ASP.NET中使用ADO时,首先要注意下面两点:

(2)为了在ASP.NET网页里调用、使用STA(Single Thread Apartment)的COM组件,程序必须在<%@Page...>前导指令加上aspcompat=”true”属性;其余便和ASP网页使用ADO一样。下面以一范例部分代码为示例。

2 ADO.NET技术简介

2.1 ADO.NET技术

ADO.NET是对ADO的继承,是一个用来存取数据和信息的API。它提供与OLE DB接口兼容的数据源的数据存取接口,应用程序可以使用ADO.NET连接到这些数据源来获取、操纵和更新数据;还提供SQLServer编程接口,对SQL Server数据库访问效率比OLE DB接口访问SQL Server数据库效率高。其模型如图3所示。ADO.NET的核心组件主要有三类,即Connection、Data Set和Command。另外还添加了许多新的对象和程序化接口,如:Data Adapter、Data View、Data Reader等等。

(1)Connection对象:Connection对象在应用程序和数据库之间建立连接。通过SQL Connection对象建立与SQL Server数据库的链接到支持ADO Managed Provider的数据来源。

(2)Command对象:是设置SQL命令、传递系统参数以及取得数据结果等,可以通过SQLCommand对象直接操作SQLServer数据库,通过OLEDB Command操作支持Managed Provider的数据来源。

(3)Data Set对象:Data Set不是一个Record Set,而是类似数据库(Data Base),在Data Set中可以包含任意数量的数据表(Data Table),且每个表对应一个数据库的数据表(Table)或视图(View)。

(4)Data Adapter对象:它是提供连接Data Set对象和数据源的桥梁,并且Data Adapter使用Command数据源中执行的SQL命令,以便将数据加载到Data Set中,并使对Data Set中数据的更改与数据源保持一致。

ADO.NET的几个对象间的关系结构如图4所示。

2.2 ADO.NET访问技术的应用程序示例

下面是一个简单的ADO.NET应用程序,它从数据源中的三个表中返回结果并将其输出到窗口的Data Grid中:

3 两种技术之比较

ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作应用程序,并且易于使用、速度快,内存支出低、占用磁盘空间较少,支持用于建立基于客户端/服务器和Web的应用程序的主要功能。但是,他们也具有以下四个方便的差异,而它们的差异,换句话说,也是ADO.NET的优点所在。

(1)缓存中数据集的存储形式。

ADO中数据是以Record Set形式存储,它的数据来源于多个表,但在内存中选择只能集中和显示在一个表中;ADO.NET中的数据集是Data Set,它在缓存中可以是一个或多个表的数据库。

(2)脱机与连机关系。

ADO.NET采用的是离线数据集(Disconnect Data Set),ADO.NET利用XML制作数据的一份副本(快照副本snapshot),它除了制作副本时在线,其他时间都是离线的。而ADO却是一直与服务器连着的在线型访问,数据访问代价比较大。

(3)标准化程度。

XML对ADO支持非常有限,而ADO.NET的设计包含了被广泛接受的XML标准,用户与Web信息共享及异构应用数据交换。

(4)传输性能。

传输性能方面ADO.NET更强。ADO基于COM技术,必须符合COM的规范,而ADO.NET基于XML数据格式,数据类型更为丰富,它不需要由COM编排而进行数据类型转换。另外防火墙通常配置只允许HTML文本通过,因为Data Set序列化格式是XML,所以防火墙可以允许Data Set通过,阻挡ADO的记录集。

4 结束语

ADO.NET是新型的Dot NET数据库访问技术接口,它支持工业技术标准,集合了所有用于数据处理的类。这些类代表了数据容器对象,它们以典型的数据库功能为特色,如索引、排序和浏览,且ADO.NET是Dot NET数据库应用程序最终的解决方案,它以整体设计为特色,而不是以数据库为核心的ADO模型。ADO.NET集成了ADO对象模型与OLE DB接口,图1和图3结合起来,可以体现这一点。所以,ADO.NET访问技术不仅在以上四个方面比ADO强,而且在功能上增进不少,尤其为Web应用程序的设计提供了一个更稳定、更具有扩展性的数据库存取技术,因此掌握ADO.NET技术具有更深远的意义。

参考文献

[1]陈志泊.ASP.NET数据库应用程序开发教程[M].北京:人民邮电出版社,2005:86-87.

[2]廖信彦.ASP.NET交互式Web数据库程序设计[M].北京:中国铁道出版社,2003:102-138.

[3]田启明.VB中基于ADO的数据库访问方法[J].电脑开发与应用,2004,17(6):33-34.

VB数据库中ADO访问技术研究 篇2

数据库技术自20世纪40年代产生以来演绎至今, 在技术上已比较成熟, 作为前端访问数据库的开发工具和环境, 至今仍在不断地完善和发展, 如De Phi、Power Builder、C++等, 而Visual Basic凭借其面向对象的事件驱动编程方式、丰富的控件功能以及可视化的编程环境, 成为数据库编程的一种优秀的开发工具, 被广大程序设计者所青睐。同时, VB在数据库方面也具有的强大功能, 通过提供的各种方便、强大的技术, 协助设计人员轻松地连接数据库, 并访问数据库, 从而提高了程序的可重用性和可维护性, 使得它经常被用在客户/服务器体系结构应用程序的开发中, 开发管理信息系统软件。

1 ADO技术简介

随着网络技术和数据库技术的不断发展, 现在的应用系统对数据集成的要求越来越高, 这些数据可能分布在不同的地方, 并且使用不同的格式, 例如关系型数据库和操作系统中的文件、电子表格、电子邮件、多媒体数据以及目录服务信息。传统的解决方案是使用大型的数据库系统, 把所有这些数据都移到数据库系统中, 然后按照操作数据库的办法对这些数据进行访问。这样做虽然能够按统一的方式对数据进行各种操作, 但这种间接方式带来了很多问题, 比如数据更新不及时、空间资源的冗余和访问效率低等。ADO (Active X Data Object) 是DAO、RDO的替代产品, 提供了许多更加方便实用的新功能。ADO扩展了DAO和RDO所使用的对象模型, 这意味着它包含较少的对象、更多的属性、方法 (参数) 以及事件。作为最新的数据库访问模式, ADO的使用简单易行, 是当前数据库开发的主流。ADO是连接应用程序和OLEDB的桥梁, 它提供的编程模型可以完成所有的访问和更新数据源的操作, ADO涉及的数据存储有DSN (数据源名称) 、ODBC (开放式数据连接) 以及OLE DB等3种方式。

2 ADO对数据源的操作和使用的对象

2.1 ADO对数据源的操作

ADO得到了程序设计语言的支持, 包括:Visual C++、VB-Script、Visual J++、Visual Basic等。ADO集中了DAO和RDO的优点而且不像DAO和RDO那样严重依赖于对象层次。这就是说操纵和创建ADO对象更为容易, 因为它们可以直接创建和管理。ADO支持的特征有:成批更新、所有类型的游标、服务器端存储过程、返回多个记录集的查询和查询目标等。ADO的目标是访问、编辑和更新数据源, 而编程模型体现了为完成该目标所必须的系列动作的顺序。使用ADO对数据源进行操作的步骤顺序与结构体系如图1。

2.2 ADO使用的对象

使用ADO对数据源进行使用的对象有: (1) Command对象:包含关于某个命令。Command对象在功能上和RDO的rdo Query对象相似; (2) Connection对象:包含关于某个数据提供程序的信息。Connection对象在功能上和RDO的rdo Cormection对象是相似的, 并且包含了关于结构描述的信息。它还包含某些~3OEnvironment对象的功能, 例如transaction控件; (3) Error对象:包含数据提供程序出错时的扩展信息。Error对象在功能上和RDO的rdo Error对象相似; (4) Field对象:包含记录集中数据的某单个列的信息。Field对象在功能上和RDO的rdo Column对象相似; (5) Parameter对象:包含参数化的Command对象的某单个参数的信息。该Command对象有一个包含其所有Parameter对象的Parameters集合。Parameter对象在功能上和RDO的rdo Parameter对象相似; (6) Property对象:包含某个ADO对象的提供程序定义的特征。没有任何等同于该对象的RDO, 但DAO有一个相似的对象; (7) Reeordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个。对象的具体结构体系如图2。

3 使用ADO编程模型的一般步骤与实例

3.1 一般步骤

3.1.1 声明ADO变量

3.1.2 与数据库建立连接

为了保证数据库应用程序移植到其他计算机上仍可正常使用, 应将前工程与数据库文件保存在同一目录, 并进行以下初始化处理。

Dim My Path As String用于存放路径

My Path=App.path取本工程所在路径

如果不是根目录, 路径后加""。

然后建立与数据库的连接。If Right$ (My Path, 1) <>""The My Path=My Path&""

Cnn.Provider=Microsoft.Jet.OLEDB.4.0指定提供者

Cnn.Connection String Data Source=&My Path&"数据库文件名"指定数据库

Cnn.oen与数据库建立连接

3.1.3 设置记录集相关属性

设置记录集的锁定类型 (Lock Type) 、游标类型 (Cursor Type) 、使用的连接对象 (Active Connection) 和记录源 (Source) 。

rs.Lock Type=ad Lock Optimestic锁定类型

rs.Cursor Type=ad Open Keyset游标类型:键值游标, 允许在记录集中进行所有类型的移动

Set rs.Active Connection=cnn设置记录集使用的连接对象为打开的Connection对象

Rs.Source=SELECT-*-FROM表名设置记录集的记录源

3.1.4 打开记录集

If rs.State=ad State Closed Then rs.open

3.1.5 对记录集进行操作

例如:rs.Move First指针移动记录首

3.1.6 ADO对象的关闭和释放

调用Close方法关闭Connect或Recordset对象。例如:

如果要将对象从内存删除可将对象设置为Nothing。例如:

3.2 VB与SQLSERVER数据库的连接

(1) 在连接数据库前, 首先要在VB菜单“工程”-“引用”中选择microsoft active X Data objects 2.6 library和microsoft active XData objects recordset2.6 2个组件, 这是在连接数据前所必做的工作。

(2) 接下来定义ADO的连接对象, 如下所示:

(3) 有源连接

通过以上分析, ADO技术具有明显的优势, 随着ADO技术性能的不断增强, DAO、RDO作用将逐步淡化。可以说, ADO是今后开发数据库应用系统的首选。

参考文献

[1]张立科.Visual Basic6.0程序设计参考手册[M].北京:人民邮电出版社, 2003.

[2]黄淼云, 张学忠.Visual Basic软件高手[M].北京:希望电子出版社, 2001.

[3]李存斌.VisualBasic高级编程及其项目应用开发[M].北京:中国水利水电出版社, 2003.

[4]王新民, 张彦玲.VisualBasic程序设计与数据库应用[M].北京:电子工业出版社, 2003.

[5]李寿兵.ADO数据存取技术[J].微型电脑应用, 2000 (6) .

[6]于英.Visual Basic6.0数据库开发与专业应用[M].北京:国防工业出版社, 2002.

ADO数据库访问技术 篇3

对于一个数据库开发者来说, 一个重要的环节就是研究数据库的访问技术。本文介绍了微软数据访问技术的主要几个阶段, 并对当前在.NET平台下被广泛使用并容易混淆的ADO与ADO.NET数据访问技术进行分析讨论, 希望和大家共同提高。

二、数据访问的历史

下面先来回顾一下微软数据访问技术所经过的几个阶段:

1、ODBC (Open Database Connectivity) 开放式数据库连接技术

它为异种数据库提供了统一的接口, 是第一个使用SQL访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库, 而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。

2、DAO (Data Access Object) 数据访问对象

它是一种面向对象的界面接口, 通过DAO/Jet功能可以访问ISAM访问数据库。不像ODBC那样是面向C/C++程序员的, 它是微软提供给Visual Basic开发人员的一种简单的数据访问方法, 主要用于操纵Access数据库。

3、RDO (Remote Data Objects) 远程数据库对象

在使用DAO访问不同的关系型数据库的时候, Jet引擎不得不在DAO和ODBC之间进行进行命令的转化, 导致了性能的下降, 而RDO (Remote Data Objects) 的出现就顺理成章了。它是一个到ODBC的面向对象的数据访问接口, 远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供一个框架。

4、OLE DB (Object Linking and Embedding, Database) COM模型的数据库接口

随着越来越多的数据以非关系型格式存储, 需要一种新的架构来提供这种应用和数据源之间的无缝连接, 基于COM (Component Object Model) 的OLE DB应运而生了。它是一种底层的数据访问界面接口, 它能够处理任何类型的数据。

5、ADO (Active X Data Objects) Active X数据对象

基于OLE DB之上的ADO更简单、更高级、更适合Visual Basic程序员, 同时消除了OLE DB的多种弊端, 取而代之的是微软技术发展的趋势。

6、ADO.NET

ADO.NET是ADO的进一步演变。它不与ADO共享相同的编程模型, 却共享ADO的大部分功能。ADO.NET是一组处理数据的类。

三、ADO和ADO.NET的对照

由于在.NET平台下数据的访问是通过ADO或ADO.NET来实现的, 在实际的教学过程中很多学生认为这两种方法是一样的, 没有本质区别, 其实不然, 下面我们就对这两种方法做一下分析比较。

1、ADO技术

Active X Data Objects是微软的一种数据访问技术。他是DAO/RDO的后继产物, 扩展了DAO和RDO所使用的对象模型, 这意味着它包含较少的对象, 更多的属性、方法以及时间。它被设计用来和数据访问层OLE DB Provider一起协同工作, 以提供通用数据访问。如前面所述, OLE DB是一个底层的数据访问界面接口, 并基于微软的COM技术, 因此使用ADO可以访问各种数据源。其架构图如图1所示:

ADO有3个核心的组成对象:Connection、Record Set和Command

⑴Connection对象:它是到本地或远程数据的连接, 管理应用程序和数据库之间的通信。

⑵Record Set对象:是用来连接到一个记录集, 从而获得查询的结果, 这些结果以二维表格的方式给出。

⑶Command对象:它是用来处理重复执行的查询或处理需要检查在存储过程中输出和返回参数值的查询, 并将返回结果存在Record Set对象中。此外还可以利用OLE DB Provider所提供的支持来进行批操作和操纵数据库结构操作。

2、ADO.NET技术

ADO.NET是ADO的进一步演变。是一个用来存取信息和数据的API。它提供与OLE DB接口兼容的数据源的数据存取接口, 应用程序可以使用ADO.NET连接到这些数据源来进行数据操作;另外ADO.NET使用了强类型化数据, 编程代码更为简明, 对数据库的访问效率更高。其架构图如图2所示:

ADO.NET的核心组成对象有3个:Connection、Data Set和Command;另外还添加了许多新的对象和程序化接口, 如:Data Adapter、Data View、Data Reader等

⑴Connection对象基本等价于ADO中的Connection对象, 可以使用它连接数据库或断开与数据库的连接。另外还可以作为其他对象 (比如Data Adapter和Command对象) 与数据库通信以提交查询并检索结果的通道。

⑵Command对象结构上与ADO的Command对象相似, 是设置SQL命令、传递系统参数和取得数据结果等, 另外可以通过SQLCommand所提供的不同方法来执行各种查询, 比如为处理以XML格式返回结果的查询而设计的方法 (Execute XmlReader) 。

⑶Data Set对象正如其名称表明的那样, 它不同于一个Record Set, 它包含一个数据集。可以认为Data Set对象是包含多个Data Table对象 (存储在Data Set对象的Table集合中) 的容器。另外, 创建ADO.NET是为了帮助开发人员建立大型的多层数据应用程序。有时, 可能需要访问运行在中间层服务器上的组件以检索一些表的内容。可以将所有数据包装到Data Set对象中并在单个调用中返回, 而不必每次一个表地重复请求服务器来提取数据。

⑷Data Adapter对象代表了微软数据访问模型的新概念, 虽然可以将ADO中的Command对象看成是它的同类, 但在ADO中没有真正与之等价的对象。在ADO.NET对象模型中, Data Adapter对象可以作为数据库和无连接对象之间的桥梁。

3、两种技术之比较

⑴ADO与ADO.NET的相似之处:

它们都能够编写对数据库服务器中的数据进行访问和操作的应用程序, 并且易于使用、高速度、低内存支出和占用磁盘空间较少, 支持用于建立基于客户端/服务器和Web的应用程序的主要功能。

⑵ADO与ADO.NET的区别:

通过上面的叙述我们知道ADO使用OLE DB接口并基于微软的COM技术, 而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系框架。众所周之.NET体系不同于COM体系, ADO.NET接口也就完全不同于ADO和OLE DB接口, 这也就是说ADO.NET为.NET架构提供了更优化的数据访问模型, 它的主要优点主要体现在以下几个方面:

·数据集的存储方式

ADO采用Record Set存储, 它的数据来源于多个表, 但在缓存中只能集中显示在一张表中, 而ADO.NET采用Data Set存储, 它在缓存中可以是包含一张或多张表的数据库。

·互操作性与可维护性

ADO.NET使用XML格式把数据从数据源传输到本地内存的数据副本中, 因而互操作性更强, 维护更简单。

·对无连接环境的支持

ADO.NET支持离线数据集 (Dis Connect Data Set) 可以利用XML制作数据的一个副本, 除了制作副本的时候要求在线, 其他时候都是离线的。而ADO却是一直与服务器连接着的在线访型访问, 访问代价比较大。

·可编程性与传输性能

ADO.NET使用强类型化数据, 因而使得代码更加简明且易于编写;另外使用强类型化数据可以帮助避免开销很大的数据类型转换, 加快数据传输的性能。

·可伸缩性

ADO.NET编程模型鼓励程序员为运行在Web上的应用程序节省系统资源。因为数据保存在本地内存的缓存中, 因此没有必要为扩展的周期保留数据库锁或维持当前的数据连接。

四、结束语

ADO.NET是一组访问数据源的面向对象的类库。简单的理解, 数据源就是数据库, 它同时也能够是文本文件、Excel表格或者XML文件等。ADO.NET里包含了许多专门用于和数据打交道的对象, 是新型的.NET平台下的数据库访问技术, 它支持工业技术标准, 以整体设计为特色, 而不是以数据库为核心的A-DO模型, ADO.NET集成了ADO对象模型与OLE DB接口, 文中的图1和图2结合起来可以看出这一点。ADO和ADO.NET从本质上来说是两种不同的数据访问技术, 不能混为一谈, 而通过分析我们可以知道掌握ADO.NET技术对于我们具有更深远的意义。

摘要:探讨当前在.NET平台下被广泛使用且容易混淆的数据访问技术ADO与ADO.NET的异同点, 从数据集合的存储方式、互操作性与可维护性、对无连接环境的支持、可编程性与传输性能以及可伸缩性等方面来进行分析比较, 突出ADO.NET的优点。

关键词:ADO,ADO.NET,无连接环境,XML,强类型化数据

参考文献

[1]数据访问技术-ADO.NET程序设计微软公司著2006 (4)

[2]陈志泊ASP.NET数据库应用程序开发教程北京人民邮电出版社2005

ADO数据库访问技术 篇4

ADO.NET是微软新一代.NET数据库的存取结构,ADO是Active X Data Objects的缩写。ADO.NET是数据库应用程序和数据源间沟通的桥梁,主要提供一个面向对象的数据存取架构,用来开发数据库应用程序。

2 ADO.NET的数据库访问机制

ADO.NET的架构主要是希望能够在做处理数据的同时,不要一直和数据库联机,而导致一直站用系统资源的现象发生。为了解决此问题,ADO.NET将存取数据和数据处理分开,达到离线存取数据的目的,使得数据库能够执行其他工作,因此将ADO.NET架构分成.NET Data Provider和Data Set数据集(数据处理的核心)两大主要部分。

3 ADO.NET的主要对象

从ADO.NET的结构示意图可知,ADO.NET主要包括Connection、Command、Data Reader、Data Adapter和Data Set对象,而要通过ADO.NET访问数据引用这些对象时必须使用Using语句来引用相应的ADO.NET命名空间,才能在编写程序时,使用较简短ADO.NET对象存取数据库,常见的命名空间有:System.Data,System.Data.Ole Db,System.Data.Sql Client等。

下面将分别介绍这五个对象:

3.1 Connection对象

主要用来与数据库建立联机,它提供两种常用方法:Open方法,用来建立并打开一个数据库的联机;Close方法,将数据库的联机关闭。

与SQL Server连接:

Sql Connection conn=new Sql Connection(“Uid=Sa;pwd=123;database=数据库名称;server=172.16.11.12”);

与Access、Excel等数据库连接:

Ole Db Connection conn=new Ole Db Connection(“Provider=Microsoft.Jet.

OLEDB.4.0;Data Source=数据库真实路径”);

3.2 Command对象

对数据库执行命令操作,如进行数据的查询、修改、添加、删除等,实际上就是传送SQL指令,SQL指令封装在Command对象中。

定义Ole DBCommand对象:

Ole Db Command cmd=new Ole Db Command(“SELECT*FROM BOOKINFO”,conn);

定义SQLCommand对象:

Sql Command cmd=new Sql Command(sql,conn);

根据不同的操作目的选择执行命令的方式:

如果只是为了运行一条语句,例如插入,

Execute Non Query();//返回受影响的行数

如果执行命令时为了得到一个查询值

Execute Scalar();//返回第一行第一列的值

如果执行数据时为了返回一些查询结果

cmd.Execute Reader();//返回一个阅读器

3.3 Data Reader对象

可以从数据库中顺向逐条从数据库中读取由SELECT命令返回的只读数据流,而且当前内存中每次只存一条记录。Data Reader对象的读取数据方式是先通过Connection对象和数据库联机,再通过Command对象的Execute Reader方法执行SQL SELECT命令获取查询的数据,再通过Data Reader对象的属性和方法,将获取的数据以只读方式从当前的数据记录顺向逐条处理,最后将数据放入内存或直接显示在窗体上。,但是要注意在Data Reader开启时,必须和数据库一直保持联机,此时Connection只提供给Data Reader使用,必须等到Data Reader关闭后,才允许执行其他Connection命令。Data Reader适用于只需返回一个简单的只读记录集的情况。Data Reader最主要的方法是Read,用于从查询结果中获取数据行。

Data Reader每执行一次Read()方法,就返回一个Bool值,说明是否有数据可读,并且所检索的数据向下走一行。

程序示例:(Data Reader的Read()方法和数据检索)

说明:dr[0],dr[1]分别表示第一列,第二列中的值,也可以用列名dr[“读者Id”],dr[“姓名”]来访问列的值

3.4 Data Adapter对象

适配器,包含将数据从数据库中取出的方法,和将数据写回数据库的方法,是数据库和Data Set之间沟通的桥梁。Data Adapter对象使用Command对象执行SQL命令,将从数据库获取的数据送到Data Set,此时便可使用Data Table对象来存取数据表,将Data Set里面的数据经过处理后再送回数据库。

Data Adapter对象的常用属性有:

(1)Selectcommand属性:选择数据源中的记录;(2)Insertcommand属性:往数据源中添加新记录;(3)Updatecommand属性:更新数据源中的记录;(4)Deletecommand属性:从数据源中删除记录。

Data Adapter对象的常用方法是Fill方法:主要作用是从数据源中选择数据以填充数据集;Update方法:在对数据集完成增加、删除或修改工作后,再调用Update方法更新数据源。

3.5 Data Set对象

数据集,可以说是ADO.NET的主角,根据需要从数据库中取出的数据在内存中的驻留副本,从而实现离线操作,适合于高度分布的应用程序设计。Data Set对象包含数据表(Data Table)的集合,和表间关系(Relation)的集合。数据表(Data Table)是创建在Data Set中的一个表,包含数据行(Data Row)和数据列(Data Column)的集合。数据行(Data Row)包含状态,状态可能是Deleted,Modified或Un Changed中的一种。

数据集的操作:

声明数据集:Dataset Ds=New Dataset();

构造数据适配器Data Adapter

Sql Data Adapter da=new Sql Data Adapter(“select*from book Info”,Conn);

填充数据集:

Da.Fill(Ds,”Book Info“);//Book Info表示数据集中的表名

访问数据集中的表:

Ds.Tables[“Book Info”]或Ds.tables[0]

说明:Ds.Tables用于访问数据集Ds中的表集合;Ds.Tables[“Book Info”]访问表集合中名为Book Info的表;Ds.tables[0]表示Ds数据集中第一个表。

访问数据集表的行:

string str=“Book Id=’51’”;

Datarow[]rows=ds.tables[“Book Info”].select(str);

修改数据集:

修改数据集中的行:

将Book Info表中图书编号为’xxxx-xxxx-xx-02’的图书署名修正为C#数据库编程

string str=“Book Id=’xxxx-xxxx-xx-02’”;

Data Row[]rows=ds.tables(“Book Info”).select(str);//修改数据行

if(rows.Length>0)

{Rows[0][“Book Name”]=“C#数据库编程”;}

删除数据集中的行:

删除数据集中图书编号为xxxx-xxxx-xx-02的书籍信息

string str=“图书编号=’xxxx-xxxx-xx-02’”

Data Row[]rows=ds.Tables[“Book Info”].Select(str)

foreach Data Row row in rows

{row.Delete();}

在数据集中增加一行:

在数据集中增加读者:读者Id为“0333”,姓名为“张三”

Data Row row=ds.Tables(“Reader”).New Row();

//New Row是一个方法,返回一个表的一个新行

//对新行的各列赋值

row[“读者Id”]=“0333”

row]“姓名”]=“张三”;

//将新的行加入到数据集的表中

Ds.tables(“Reader”).Rows.Add(row)

由数据集写回数据库:

第一步:生成Data Adapter的Insert Command,Update Command,Delete Command对象

第二步:调用Data Adapter的Update方法

//生成Data Adapter,填充数据集

String sql=“select*from Book Info”;

Sql Data Adapter da=new Sql Data Adapter(sql,conn);

Data Set Ds=new Dataset();

Da.Fill(Ds,”Book Info“);

//在此做一些插入、修改、删除动作,

//修改数据集中的数据(代码省略)

Sql Command Builder db as new Sql Command Builder(Da);

//Command Builder是一个命令生成器,能够自动的根据Da的Select命令生成Da其它的命令对象

//调用Update方法,将数据集中修改了的内容写回到数据库中

Da.Update(Ds,”Book Info”);

4 结束语

ADO.NET的功能非常强大,它是一个新的数据库访问编程模型。它将帮助你以更加有效的方式构建高效数据库应用程序。笔者仅基于自己的一些编程经验对ADO.NET数据库访问做了一些研究。

参考文献

[1]曹祖圣,吴明哲,等.Visual C#.NET程序设计经典[M].北京:科学出版社,2004:344-354.

[2]Scott Allen,Syed Fahad Gilani等.C#数据库入门经典[M].北京:清华大学出版社,2003:153-169.

[3]康博.C#高级编程[M].北京:中国青年出版社,2002.

ADO数据库访问技术 篇5

随着因特网技术的迅速发展和普及,以及当前网络对数据资源的强烈需求,将Web服务器与数据库技术相结合已成为近年来因特网应用的热点之一。目前流行的B/S(Browser/Server)三层体系结构,能充分共享Web资源,使用方便、安全高效,也充分利用了数据库系统中宝贵的信息资源。

Microsoft.NET是支持新一代互联网的系统平台,.NET Framework是.NET平台的基础,在.NET框架中,ADO.NET是ASP.NET(XML Web Services和Web Forms)和Windows Forms应用访问各种数据(如RDBMS,XML文档)的标准服务,它能处理当今n层的Web应用程序所要求的非连接数据体系结构,在访问SQL Server数据库时,性能优越,得到了广泛应用。

2 ADO.NET

C#是专为.NET平台而设计的一种全新的程序语言,使用C#既可以编写Web应用程序又可以书写Windows应用程序,无论在项目的哪一个模块下,访问数据库是开发程序中最重要也最常用的部分,.NET框架提供了ADO.NET(Active X Data Objects.NET)来支持对数据库的访问,它是微软在.NET Framework中创建分布式和数据共享应用程序的编程接口,是ADO的升级版本,它建立起数据库应用程序和数据源之间沟通的桥梁,提供面向对象的数据存取架构,是目前开发数据库应用程序的主要接口[1]。ADO.NET包含两个核心组件:Data Set(数据集)和.NET数据提供程序,使用这些组件可以从数据操作中分解出数据访问。

2.1 Data Set对象

Data Set对象是支持ADO.NET的断开式、分布式数据方案的核心对象[2],是专门用于实现独立于任何数据源的数据访问而设计的,主要功能是在内存中暂存并处理各种从数据源中所取回的数据,可以看成Data Set就相当于存在于内存中的一个数据库,通过Data Adapter对象与数据库做数据交换。它可以用于多种不同的数据源,既可以用于XML数据,也可以用于管理应用程序本地的数据。它包含了一个或多个Data Table对象的集合,Data Table相当于内存中的一个数据表,包含数据行的集合Rows、数据列的集合Columns。Data Set通常用来在应用程序与数据库服务器断开连接后保存取得的数据,在离线时,Data Set能独自完成数据的新增、修改、删除、查询等操作,而不必局限于和数据库联机时才能做的数据维护工作,如此一来,就可以避免客户端和数据库服务器联机时,而客户端不对服务器做任何操作,却一直占用数据库服务器资源,这种处理方式提高了数据库的延展性。

2.2 通过.NET数据提供程序访问数据源

.NET数据提供程序是为C#应用程序提供访问数据源的接口,用于实现对数据库的连接、执行命令和获取数据查询的结果。在C#中ADO.NET通过.NET数据提供程序来访问数据源,其访问方式如图1所示[3]。

由图1可知,ADO.NET通过4个.NET数据提供程序来访问数据源。

(1)DB.NET数据提供程序:由于ADO.NET完全兼容于OLE DB兼容数据库,因此,无论采取的是Access、SQL Server、Visual Fox Pro、Informix、Oracle、d Base或其他数据库,只要该数据库有OLE DB驱动程序,ADO.NET就能够加以访问。ADO.NET通过测试的OLE DB提供程序。

1)LOLEDB:用于SQL Server6.5以前版本的Microsoft OLE DB提供程序

2)DAORA:用于Oracle的Microsoft OLE DB提供程序

3)crosoft.Jet.OLEDB4.0:用于Microsoft Access数据库的OLE DB提供程序

(2)SQL Server.NET数据提供程序:用来访问SQL Server7.0或更新版本的数据库,由于使用其自身的协议(Tabular Data Stream)与SQL Server沟通,此协议无须依赖OLEDB,而直接由通用语言运行库CLR(Common Language Runtime)管理,因此使用SQL Server.NET数据提供程序访问SQL Server数据库比使用OLE DB.NET数据提供程序访问数据库效率更佳。采用SQL Server.NET数据提供程序,它主要包含4核心对象来完成对数据库的访问,其名称和功能如表1所示[4]。

3 利用ADO.NET访问数据库

ADO.NET主要包括Connection、Command、Data Reader、Data Adapter和Data Set对象,这5个对象提供了两种访问数据库的方式,如图2所示,方式一是利用Connection、Command、Data Reader对象,这种方式只能读取数据库,即不能修改记录,若只是想查询记录的话,这种方式的效率要高些;方式二是利用Connection、Command、Data Adapter和Data Set对象,这种方式灵活,可以对数据库进行各种操作[5]。

针对不同的数据库,ADO.NET提供了多套类库,若要使用SQL Server数据库,需要在页面中导入如下的命名空间:using System.Data.Sql Client;

下面在VS.NET环境下,通过创建基于C#的Windows应用程序项目来分析ADO.NET提供访问数据库的两种方式,进而总结ADO.NET访问数据库的一般步骤。

3.1 使用Data Reader对象访问数据库

该例要实现的功能:建立一个Windows应用程序,读取SQL Server 2000中xsgl数据库的Course表中的记录,将课程的号码、名称和教师的姓名显示在文本框中。其运行效果如图3所示。

(1)在SQL Server 2000中建立xsgl数据库,该数据库内Course表中各字段的设置如图4所示。

(2)界面设计,选中当前窗体Form1.cs,在属性窗口中设置text属性为“显示course表的数据”,即指定窗体的标题,在窗体Form1.cs上添加一个文本框,其name保持默认设置,并允许多行显示。

(3)双击窗体,进入代码窗口,在程序中加入命名空间:using System.Data.Sql Client;

(4)在Form1_Load事件内的代码为:

(5)使用Data Reader对象读取数据库方式的步骤

1)Sqlconnection对象创建数据连接。

2)Sqlcommand对象执行SQL命令并返回结果。

3)Sqlcommand对象的Execute Reader方法创建Data Reader对象。

4)Data Reader对象的Read方法读取数据表中的记录,并把数据显示在数据控件中。

5)关闭数据阅读器的同时关闭数据库连接。

其中Data Reader对象以在线的方式使用数据库,在关闭数据阅读器的同时关闭数据库的连接。

3.2 使用Data Set对象访问数据库

该例要实现的功能:使用Data Set对象访问xsgl数据库中student、score、course3数据表内容,产生3个Data Table对象,并将这3Data Table对象名称依次命名为学生表、成绩表、课程表,然后将3Data Table对象加入到组合框cbotable中,此时只要通过cbotable控件就可查询其他对象的数据,并显示在data Grid1控件上。例如:选择成绩表,单击查询按钮,在data Grid1控件上显示的内容如图5所示。

(1)在xsgl数据库中增加student、score两个表的定义,定义表的结构如图6所示。

(2)界面设计。

(3)在程序中加入命名空间:using System.Data.Sql Client。

(4)定义公用变量:Data Set mydataset。

(5)在Form1_Load事件内的代码

(6)“查询”的单击事件代码:

//把组合框中选中的Data Table对象作为数据源赋给//data Grid1实现数据绑定。

data Grid1.Data Source=mydataset.Tables[cbotable.Text];

其中,在该例中,通过数据适配器对象mydataadapter1的Fill填充方法分别产生学生表Data Table对象、成绩表Data T-able对象和课程表Data Table对象,这3个对象构成了数据集集合Tables,在该集合中3个元素的编号从0~2,使用for循环依次把数据集集合Tables中各Data Table数据表对象的名称添加到组合框中,并把学生表Data Table对象作为数据源赋给data Grid1实现数据绑定。

(7)使用Data Set对象访问数据库方式的步骤:

1)使用Sqlconnection对象创建数据连接。

2)使用Sqlcommand对象执行SQL命令并返回结果。

3)建立数据适配器对象Sql Data Adapter。

4)建立Data Set对象。

5)用数据适配器对象的Fill方法填充dataset对象,创建Data Table对象。

6)为数据控件例如data Grid指定数据源实现绑定,显示数据表的内容。

其中数据适配器对象SQLData Adapter会自动打开和关闭数据库的连接,所以这种方式不需要明确打开和关闭数据库。

4 结语

ADO.NET是新一代的数据存取技术,对数据库的访问技术进行了讨论。在VS.NET环境下通过创建基于C#的Windows应用程序项目,分别对ADO.NET提供的两种数据库访问方式给出实例,总结了两种方式实现数据库访问的步骤,这种访问数据库的方式不仅适合于Windows数据库应用程序开发,而且为Web应用程序访问数据库提供了参考。通过分析了解到.NET平台如何通过数据提供程序实现对数据库的访问,A-DO.NET的5个主要对象如何为数据库操作服务,实例的实现为数据库后续操作奠定了基础。

参考文献

[1]曹祖圣,吴明哲,黄世阳,等.Visual C#.NET程序设计经典[M].北京:科学出版社,2006.

[2]杨树林,胡洁萍.C#程序设计与案例教程[M].北京:清华大学出版社,2007.

[3]白戈力,夏丽娟.ASP.NET中的数据库访问[J].内蒙古科技与经济,2006,(5).

[4]王宝祥.基于ADO.NET的数据库访问技术的应用研究[J].计算机应用与软件,2004,21(2).

ADO数据库访问技术 篇6

1 ADO.NET体系结构

ADO.NET是一种基于标准的程序设计模型, 可用来创建分布式应用以实现数据共享。ADO.NET有Data Set和.NET数据提供者两个重要组成部分。ADO.NET的体系结构见图1。其中.NET Framework数据提供程序用于连接到数据库、执行命令和检索结果, Data Set用于独立于数据源的数据访问。

ADO.NET包含System.Data命名空间中的一组对象, System.Data命名空间可以通过.NET数据提供者 (Data Provider) 与数据库通信。ADO.NET对象允许连接到数据库, 在数据库中检索、编辑、删除和插入数据, 并在程序中处理数据。ADO.NET操作数据库结构见第71页图2[2]。

2 ADO.NET的特点

ADO.NET提供了很多用于以创建数据为中心的应用程序的特性。

2.1 互操作性强

由于ADO.NET使用XML交换数据, 因此任何支持XML的组件都可以从ADO.NET接收数据。这样就可以在ADO.NET和运行任何平台的应用程序之间传输数据, 以支持跨平台应用。

2.2 可扩展性强

ADO.NET创建的应用程序使用XML在层之间传输数据, 这样就可以在已经部署的应用程序中增加层, 并实现与新层中的对象无缝交换数据。

2.3 不存在数据转换类型

ADO.NET使用XML交换数据, 不存在数据类型转换的需求, 可以极大地提高应用程序的性能[3]。

3 ADO.NET的内置对象

ADO.NET的核心组件是为.NET数据提供程序, 他们构成了应用程序和数据源之间的接口。.NET数据提供程序包括4个核心对象:Connection, Command, Data Adapter和Data Reader。其中Connection用于连接到数据库或其他数据源;Command用于在数据库中检索、编辑、删除或插入数据;Data Adapter使用来自数据源的数据填充Data Set, 并将Data Set中的更改更新到数据源;Data Reader从数据源提供数据流, 只允许以只读、顺向的方式查看其中所存储的数据。

4 ADO.NET对SQL数据库的访问技术

随着管理信息系统的不断发展, 大型超市商品繁多, 管理存在一定的困难, 由此开发了“超市商品管理系统”, 实现超市商品的增加、删除、更新、查询操作。

下面以“超市商品管理系统”为例, 以C#为编程语言, 具体介绍ADO.NET对SQL数据库的访问技术的实现过程。

4.1 数据库设计

访问的数据库文件为Super Market, 所含表为Commodity List, 其表结构设计见图3。

4.2 引用命名空间

由于在访问数据时需要用到相关的.NET数据提供程序对象, 因此在进行数据访问前首先要在.aspx.cs (包含事件处理函数的文件) 开始处填写“using System.Data.Sql Client”代码, 以引用命名空间。

4.3 连接数据库

数据库连接的创建和打开示例为

static string conn String="Data Source=.;Initial Catalog=Super Market;

Integrated Security=SSPI";//创建数据库连接字符串

Sql Connection conn=new Sql Connection (connString) ;//定义数据库连接对象

conn.Open () ;//打开数据库连接

4.4 访问和操作数据库

4.4.1 操作数据库

当数据库连接上以后, 就要对数据库进行操作, Command对象就是用来执行数据库操作命令的。通过Command命令执行SQL语句, 能完成对数据库的大部分常见操作, 包括创建、修改、删除数据库对象。比如, 对数据库中数据表的添加删除。也可以对数据库对象的用户访问权限进行设定。不过最常用的是Command通过执行SQL语句对数据表记录进行增删改查, 包括选择查询 (SE-LECT语句) 来返回记录集合, 执行插入语句 (IN-SERT语句) 来插入记录, 执行更新查询 (UPDATE语句) 来执行更新记录, 执行删除查询 (DELETE语句) 来删除记录等。

Command对象有3个执行方法:一是Execute Scalar () :执行SQL语句, 并返回结果集中的第一行第一列, 建议聚合函数如Count (*) , Sum等;二是Execute Reader () :执行SQL语句, 返回一个Data Reader对象;三是Execute Non Query () :执行SQL语句, 并返回受命令影响的行数。Command命令也可以传递参数并返回值, 也可以调用数据库中的存储过程[4]。

4.4.2 数据操作的代码

以下是实现数据的增加、删除、更新和查询操作的代码。

1) “增加”数据操作代码

2) “删除”数据操作代码

3) “更新”数据操作代码

4) “查询”数据操作代码

综上所述, ADO.NET是.NET数据库应用程序的最终解决方案, 通过介绍ADO.NET对SQL数据库的基本访问技术, 可以看出ADO.NET是一个用于创建分布式和数据共享程序的基本各种标准的编程模型, 只有掌握ADO.NET数据访问技术, 才能以更加有效的方式开发出功能强大、生命力持久的数据库应用程序。

摘要:阐述了ADO.NET的体系结构、特点以及内置对象, 同时以C#为编程语言, 系统、实例化地介绍ADO.NET对SQL数据库的连接方法, 并对常用数据访问技术 (如增加、删除、更新、查询等) 进行归纳介绍。

关键词:ADO.NET,C#,SQL数据库

参考文献

[1]魏峥, 王军, 崔同良.ADO.NET程序设计教程与实验[M].北京:清华大学出版社, 2007.

[2]龚根华, 王炜立.ADO.NET数据访问技术[M].北京:清华大学出版社, 2014.

[3]陈承欢.ADO.NET数据库访问技术案例教程[M].北京:人民邮电出版社, 2008.

ADO数据库访问技术 篇7

关键词:C#数据库访问,移植性

ADO.NET是Microsoft公司在.Net平台下提出的新的数据访问模型。ADO.NET结构图如图1。在ANO.NET2.0中,可以使用多种.NET Framework数据库提供程序来访问数据源。数据提供程序有:1)SQL Server.NET Framework;2)Oracle.NET Framework;3)OLE DB.NET Framework;4)ODBC.NET Framework。该文针对SQL Server.NET Framework的访问模式做进一步的探讨。

1 模式描述

按照ADO.NET提供的访问模式,常用的做法是第一步建立Connection对象,建立Connection对象常用的方式是将本地计算机名,用户名,密码等以字符串的方式进行描述;第二步创建Command对象的字符串,例如查询方式,查询内容等。第三步则是打开连接,执行命令即可。这种做法能解决实际问题,但是系统的移植性很差,修改起来不方便。因此为了解决这种问题,设计了一种方便移植性数据库访问方式。

1.1 配置app.config文件

针对Connection对象所建立的数据库的连接语句,采用配置文件来处理。设置数据库的连接属性。方法如下:

在程序设计中,利用ADO.NET提供的configuration类来读取。采用System.Configuration.ConfigurationSettings.AppSettings["字符串名"]获得相关数据库的参数。从而提高系统的可读可修改性。

1.2 设计通用访问接口

从代码的独立性考虑,对于数据库的访问,采用单独的类来进行描述,有利用提高代码的重用性和可维护性。由于ADO.NET对于SQL的查询语句采用SqlCommand类进行描述,同时提供了三种执行方式,针对这三种执行方式,设计相关的通用类。方法如下:

1.2.1 不带返回结果集的SQL语句,设计转换接口

1.2.2 返回SQL语句第1行第1列的语句,设计转换接口

1.2.3 返回SQL语句的结果集

以上方式是在调用原有的数据库访问API上进行封装,然后利用ADO.NET提供的数据库访问方式连接数据库,再调用相应的API。若以后需要进一步的加强数据库功能时,只需在该类的基础上封装所需的方法即可。

2 结论

本文针对SQL数据库的操作方式中出现的字符串容易出错的问题,采用面向对象的程序设计思想,设计了相关的访问模式,实践证明,这种方式行之有效。

参考文献

[1]马骏.c#网络应用编程基础[M].北京:人民邮电出版社,2006.

上一篇:动态学习体系下一篇:储层岩石学特征