ADO数据访问技术(精选7篇)
ADO数据访问技术 篇1
1 引言
在大多数实际项目中,应用程序需要和数据库交互,.NET中对数据库的访问是通过ADO.NET来实现的。
2 ADO.NET
ADO.NET是.NET应用程序的数据访问模型,主要为创建分布式应用程序提供数据访问机制。其中的Managed Provider是一个多层次的无连接编程模型,模型的结构如图1所示。
ADO.NET包含两个核心组件:Data Set和.NET Framework数据提供程序。
2.1 Data Set
Data Set是ADO.NET的断开式结构的核心组件。它包含一个或多个Data Table对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关Data Table对象中数据的关系信息组成。Data Set的模型结构如图2所示。
2.2. NET Framework数据提供程序
.NET Framework数据提供程序是ADO.NET结构的另一个核心元素,包含四个核心对象Connection、Command、Data Reader和Data Adapter。用于连接到数据库、执行命令和检索结果,或将其放入Data Set对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起。
Connection对象建立与特定数据源的连接;Command对象用于对数据源执行命令;Data Reader对象从数据源中提供高性能的数据流;Data Adapter提供连接Data Set对象和数据源的桥梁,Data Adapter使用Command对象在数据源中执行SQL命令,以便将数据加载到Data Set中,并使对Data Set中数据的更改与数据源保持一致。
3 常用数据库访问方式
.NET Framework提供了四个.NET Framework数据提供程序,即SQL Server.NET Framework、OLE DB.NET Framework、ODBC.NET Framework和Oracle.NET Framework。
SQL Server.NET Framework使用自身的协议与SQL Server通信,它位于System.Data.Sql Client命名空间中;OLE DB.NET Framework通过COM Interop使用本机OLE DB启用数据访问,它位于System.Data.Ole Db命名空间中;ODBC.NET Framework通过COM Interop使用本机ODBC驱动程序管理器(DM)启用数据访问,通过ADO.NET测试的ODBC驱动程序有:SQL Server、Microsoft ODBC for Oracle、Microsoft Access驱动程序(*.mdb),它位于System.Data.Odbc命名空间中;Oracle.NET Framework通过Oracle客户端连接软件启用对Oracle数据源的数据访问,它位于System.Data.Oracle Client命名空间中,并包含在System.Data.Oracle Client.dll程序集中。
一般根据应用程序的设计和数据源,选择.NET Framework数据提供程序可以提高应用程序的性能、功能和完整性。
4 实现数据的访问
实现数据的访问操作有两种方式,一是与数据库创建连接后,利用Command命令直接对数据操作;二是利用数据适配器(Data Adapter)的Fill或Update等方法对数据操作,该方法是对数据表需要进行复杂操作或长时间交互处理时常用的方法。
下面以SQL Server数据库编程为例介绍数据库编程的一般方法。
ADO.NET访问数据库一般步骤为:
1)创建数据库的连接;
2)请求一个数据集合;
3)将集合放入Data Set中;
4)如果需要,再请求另外的数据集合;
5)关闭数据连接;
6)在进行所需要的操作;
7)需要的话,将Data Set的变化更新到数据库中。
4.1 创建数据库的连接
一般使用Sql Connection对象提供与Microsoft SQL Server的连接,有两种形式的连接字符串。
一是在连接字符串中指定服务器名、用户ID、口令、数据库名。假设SQLServer数据库服务器为127.0.0.1(本机),有效数据库访问用户名为sa,对应密码为1234,数据库名shijuan,则连接字符串可以写为:
string str="server=127.0.0.1;uid=sa;pwd=1234;database=shijuan";
Sql Connection conn=new Sql Connection(str);
二是在连接字符串中指定服务器名、集成安全性(Integrated Security=SSPI)、数据库名等信息。上述连接字符串可以写为:
string str="server=127.0.0.1;Integrated Security=SSPI;database=shijuan";
Sql Connection conn=new Sql Connection(str);
4.2 打开和关闭连接
Open方法使用连接字符串属性中的信息,联系数据源并建立一个打开的连接。
Close方法关闭连接。
如果正在使用Data Adapter,则不必显式打开和关闭连接。当调用这些对象的某个方法时,该方法将检查连接是否已打开。如果没有,适配器将打开连接,执行其逻辑,然后再关闭连接。
4.3 数据访问方法
采用编写代码进行操作的方式通常有两种。
一种是在保持连接的方式下利用Sql Command执行SQL命令,根据程序员所设置的SQL语句的功能自动选择检索(Select Command)、插入(Insert Command)、更新(Update Command)和删除(Delete Command)等命令,从而实现对数据库的各种操作。
二是利用Sql Data Adapter的Fill方法将数据表填充到客户端Data Set数据集中,填充后与SQL服务器的连接就断开了。然后可以在客户端对Data Set中的数据表进行浏览、插入、修改、删除等操作。操作完成后,如果需要更新数据库,再利用Sql Data Adapter的Update方法把Data Set中数据表处理的结果更新到SQLServer数据库中。
在Microsoft Visual Studio.NET 2003的C#环境中,笔者开发研制的自动出卷系统中,设计数据库名称shijuan,其中包含kemu、xuanze、tiankong、fenxi等若干表。例如,在Windows应用程序中,希望显示shijuan数据库中的kemu表,编程如下。
1)首先新建一个Windows应用程序,向窗体拖放一个Data Grid控件。
2)在代码方式下添加名称空间引用。
using System.Data;
using System.Data.Sql Client;
3)创建与shijuan库的连接,并对其操作
5 结束语
Visual Studio.Net中的ADO.NET提供了强大的数据库的访问能力,不仅可以方便的访问本地数据库,而且还可以方便的访问远程数据库,而对程序员来说访问的接口是一致的。掌握了数据库一般访问方法,就可以触类旁通,设计出优秀的基于.Net的数据库应用程序。
参考文献
[1]孙维煜,刘杰,等.C#案例开发[M].北京:中国水利水电出版社,2005.
[2]Fabio Claudio Ferracchiat,Jay Glynn..NET数据服务高级编程[M].北京:清华大学出版社,2002.
[3]DAVID SCEPPA.ADO.NET技术内幕[M].北京:清华大学出版社,2003.
ADO数据访问技术 篇2
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.
VB数据库中ADO访问技术研究 篇3
数据库技术自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数据访问技术 篇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
随着Internet技术的不断发展, Web应用系统开发技术也得到了进一步地发展, 这类系统通常采用Browser/Server方式实现对Web数`据库服务器的访问, 而访问数据库的关键技术就是数据访问接口。在不同的Web环境下, 操作数据库的技术有所不同, 具有代表性的有:CGI、JDBC、ASP等。
其中ASP技术通过ADO数据访问接口可以很方便地与数据库建立连接, 并操纵数据库, 开发者能够比较容易地开发出功能强大的数据库应用程序, 只是A-DO的连接传输模式性能较低, 尤其同时对多用户连接时, 服务器负载很重。
在.NET技术产生后, 微软为了克服ADO的不足, 随即推出了ADO.NET, 这种非连接传输模式, 只有在需要取得数据或更改数据时才需要与数据源进行连接, 应用程序所要管理的连接数减少, 服务器负载大大减轻了, 运行效率也大大提高了。
1、ADO.NET的结构
ADO.NET是一组用于和数据源进行交互的面向对象类库, 数据源可以是数据库, 也可以是文本文件、Excel表格或者XML文件, 应用程序可以使用ADO.NET来连接数据源, 并检索、处理和更新所包含的数据。
ADO.NET对象可分为两类, 一类是联机对象 (与数据直接连接) , 包括Command对象、DataReader对象、DataAdapter对象等, 借助于这些对象可以连接数据源或者进行数据维护等相关操作;另一类是与数据源无关的对象, 如DataSet对象。对象模型如图1所示。
DataSet对象是ADO.NET非连接结构的核心组件, 设计该对象的目的是为了实现独立于数据源的访问, 用于多种不同的数据访问, 用于XML数据或管理应用程序本地数据等。DataSet中还包括一个或多个DataTable对象的集合, 这些对象由数据行和数据列组成, 也包括主键、外键、约束和有关的数据关系信息等。
ADO.NET结构的另一个核心是.NET Framework数据提供程序, 是一组包括Connection对象、Command对象、DataReader对象和DataAdapter对象在内的组件, 其设计目的是为了实现数据的存取、修改、更新等操作。
ADO.NET集合了所有允许数据处理的类, 这些类表示具有典型数据库功能的数据容器对象, 其结构图如图2所示。
2、ADO.NET的数据访问机制
从ADO.NET结构分析来看, 我们知道对数据访问的形式有两类:一种是联机模式, 利用DataReader对象来实现对数据的只读访问;另一种是非联机模式, 利用DataSet对象来实现对数据的各类操作。下面我们将基于VB语言为基础, 以对学生信息进行访问为例, 来分析这两种模式的数据访问机制。
2.1 联机模式
在这类模式下, 客户机一直保持与数据库服务器的连接, 这和ADO技术是一致的。它利用DataReader对象从数据源中提取高性能的数据流。其数据访问步骤如下:
(1) 导入命名空间System.Data.OleDb。 (DataReader封装在该命名空间内)
(2) 使用Connection对象连接数据库。
(3) 使用Command (命令) 对象向数据库索取数据。
(4) 把取回来的数据放在DataReader (数据阅读器) 对象中进行读取。
(5) 关闭对象。
提示:ADO.NET的联机模式只能返回向前的、只读的数据, 这是因为DataReader对象的特性决定的。
访问学生信息的代码如下:
2.2 非联机模式
这类模式的数据访问, 只有当进行数据库读写时才需与服务器联机, 其它操作都可在断开联机状态下进行。它利用DataSet对象实现数据源在内存中的映射, 增、删、改、查、排序等操作均可在内存中进行。其数据访问步骤可从如下学生信息访问代码中获知:
注:以上在调用DataAdapter的fill方法时, 该方法将隐式调用数据连接的Open方法, 填充完毕后会自动关闭。
2.3 两种机制性能分析
联机模式的数据访问是利用DataReader对象从数据源中提供只读的向前的高性能的数据流, 用以快速检索查询所返回的行, DataReader支持最小特性集, 所以速度非常快[3]。这种方式对数据库的操作必须是在与数据库连接的状态下, 在网络程序设计和Web应用系统中, 使用这种技术显然是存在着问题, 当网络上有成千上万的用户需要对数据库操作时, 服务器的负载是相当重的, 长时间地打开数据库也是不安全的。
而非联机模式的数据访问是利用DataSet对象实现数据源在内存中的映射, 其各类数据操作对象是本机内存中的数据。这种非联机的“断开”结构体系使得只有在读写数据库时才需要使用数据库服务器资源, 因而提供了更好的可伸缩性, 有效地避免了由于活动连接过多而千万的数据库堵塞和网络资源的浪费。
3、结束语
综上分析, ADO.NET的两种数据访问机制各有千秋, 不能一概而论, 应视具体情况而定。对于联机模式的访问在创建Web页或XML Web服务时尤为有用, 而对于多用户在进行数据库的批量操作时, 非联机模式体现出了它的优越性。
摘要:本文在介绍了ADO.NET的体系结构的基础上, 以访问学生信息为例阐述了ADO.NET的两种数据访问模式, 并对两种机制进行了性能分析。
关键词:ADO.NET,数据库,访问机制
参考文献
[1]王磊.基于.NET平台的数据库访问技术[J].福建电脑, 2006年第12期 (71)
[2]于训全, 于晓冬.基于ADO.NET的数据库访问技术研究与应用[J].企业技术开发, 2006年1月 (3~5)
【ADO数据访问技术】推荐阅读:
ADO数据库访问技术09-04
ADO访问数据库09-25
数据访问技术07-23
JSP数据库访问技术论文09-18
异步数据访问05-20
数据访问机制05-31
数据访问接口07-09
数据访问模式07-11
数据访问保护09-15
数据安全访问11-29