ADO访问数据库

2024-09-25

ADO访问数据库(精选8篇)

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.

ADO访问数据库 篇2

这次我使用ADO.NET来插入一条数据,到数据库中。主用到存储过程。我不想每次都是用SQL文本的形式了,那样始终没有进步~~~

下面首先,我把我这次练习要用到的数据库脚本,贴出来:

USE master --使用系统数据库 GO IF EXISTS(SELECT * FROM sysdatabases WHERE name=N‘DB_MyStudentLife‘) DROP DATABASE [DB_MyStudentLife]; --如果要创建的数据库存在的话,就删除 GO CREATE DATABASE [DB_MyStudentLife] --创建数据库 GO USE [DB_MyStudentLife] --使用数据库 GO IF EXISTS(SELECT * FROM sysobjects WHERE name=N‘MyClass‘) DROP TABLE [MyClass] --如果要创建的数据表存在的话,就删除(注意sysobjects,一定要全部是小写的,不然有错误,不能写成大写的。) GO CREATE TABLE MyClass --创建数据表 ( C_ID INT NOT NULL PRIMARY KEY, --班级编号 C_Name NVARCHAR(200) not null, --班级名称 C_Descr nvarchar(max) not null --班级简介 ); GO IF EXISTS(SELECT * FROM sysobjects WHERE name=N‘MyStudent‘) DROP TABLE MyStudent GO CREATE TABLE MyStudent ( S_ID int not null primary key, --学号 S_Name nvarchar(50) not null, --姓名 S_Gender char(2) not null,--性别 S_Address nvarchar(max) not null , --地址 S_Phone nvarchar(50)not null, --电话 S_Age int not null, --年龄 S_Birthday datetime not null, --生日 S_CardID int not null, --身份证号码 S_CID int not null references MyClass(C_ID) --班级编号 );

接着大家选中刚才执行脚本,创建好的数据库,然后使用我下面的数据,向数据库表里面添加数据吧

insert into MyClass(C_ID,C_Name,C_Descr)values(1,‘软件1108班‘,‘武汉软件工程职业学院‘); insert into MyClass(C_ID,C_Name,C_Descr)values(2,‘软件1107班‘,‘武汉软件工程职业学院‘); insert into MyClass(C_ID,C_Name,C_Descr)values(3,‘实验班‘,‘武汉软件工程职业学院‘); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘1‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘2‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘3‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘4‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘5‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘6‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘7‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘8‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘9‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘10‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘11‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘12‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘13‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘14‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘15‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘16‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1); insert into MyStudent(S_ID,S_Name,S_Gender,S_Age,S_Birthday,S_CardID,S_Phone,S_Address,S_CID)values(‘17‘,‘李四‘,‘男‘,‘22‘,‘1992-09-26‘,‘111111111‘,‘11232131234‘,N‘深圳宝安石岩‘,1);

说明一下,等会我要向MyClass表中插入数据,现在为这个表创建一个插入的存储过程:

IF OBJECT_ID(‘Ins_ClasseD‘,‘P‘) IS NOT NULL DROP PROCEDURE Ins_ClasseD GO CREATE PROCEDURE Ins_ClasseD @C_ID int , @C_Name nvarchar(200) , @C_Descr nvarchar(max) AS INSERT INTO dbo.MyClass ( C_ID, C_Name, C_Descr ) VALUES ( @C_ID, -- C_ID - int @C_Name, -- C_Name - nvarchar(200) @C_Descr -- C_Descr - nvarchar(max) ); GO

下面开始程序实现:

我是复习,ADO.NET,现在就随便建了一个控制台的应用程序,来开始我的测试:

注意;在下面的例子中,为了尽可能简单易于理解,我没有把连接字符串的那部分代码,放到配置文件中,

如果要放的话,要用到System.Configuration命名空间,还有一个ConfigurationManager类..具体的细节就不说了。

请看具体实现代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.Data.SqlClient;namespace ADO.NET插入一条数据到数据库中{ class Program { //连接字符串 private static string sqlCon = “server=.;database=DB_MyStudentLife;uid=sa;pwd=Password_1”; static void Main(string[] args) { //1创建连接对象(连接字符串) SqlConnection scon = new SqlConnection(sqlCon);//2创建命令对象(为命令对象设置属性) SqlCommand scmd = new SqlCommand; scmd.CommandText = “Ins_ClasseD”; scmd.CommandType = CommandType.StoredProcedure; //这里我使用存储过程来插入数据 scmd.Connection = scon; //3打开数据库连接 scon.Open();//设置参数 scmd.Parameters.Add(new SqlParameter(“@C_ID”,6)); scmd.Parameters.Add(new SqlParameter(“@C_Name”, “测试班”)); scmd.Parameters.Add(new SqlParameter(“@C_Descr”, “软件测试技术”)); //4发送命令 int result= scmd.ExecuteNonQuery(); //5处理数据 if (result > 0) { Console.WriteLine(“插入数据成功”); } else { Console.WriteLine(“插入数据失败”); } //6最后一步,差点忘记了,一定要关闭连接 scon.Close(); Console.ReadKey(); } }}

程序执行玩之后的效果图:

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

对于一个数据库开发者来说, 一个重要的环节就是研究数据库的访问技术。本文介绍了微软数据访问技术的主要几个阶段, 并对当前在.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访问数据库 篇5

在大多数实际项目中,应用程序需要和数据库交互,.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.

ADO访问数据库 篇6

随着互联网的发展, 人们对Web网页的要求越来越多的趋向于动态交互性, 而这很大程度上依赖于Web数据库。因为动态交互需要强大的信息系统支持, 信息数据以数据库形式表示更容易更新和管理。通过网页如何动态交互的访问数据库成为最关键的问题。ADO.NET由ADO改进而来, 它提供平台互用和可收缩的数据访问功能。由于XML是用于进行数据传送的格式, 任何可以读取XML格式的应用程序都可以对数据进行处理。实际上, 接收组件根本不需要ADO.NET组件

ADO.NET技术使得Web开发变得更加简单、快速、高效, 因此ADO.NET已成为目前Web程序开发中访问数据库的主流解决方案。

2. ADO.NET特点

(1) 互用性

ADO.NET解决方案可以充分利用XML的灵活性和广泛的接受性。由于XML是用于在组件间传递数据集的格式, 任何可以读取XML格式的组件都可以对组件进行处理。

(2) 可编程序性

ADO.NET模型采用类型化的操作对象, 程序员可以对自己定义的对象进行编程, 而不是对某一个数据表或者数据列进行编程。采用这种类型化的编程模式, 可以更好的表述业务对象。

(3) 可伸缩性

ADO.NET通过鼓励程序员保存用户争用的有限资源提供了可伸缩性。由于任何ADO.NET应用程序都使用了对数据库的断开的访问方式, 它并不长期保留数据库锁或活动的数据库连接。这样, 对有限的数据库资源的争用是有限的。

3. ADO.NET组件

ADO.NET提供了两个核心组件, Dataset和.NET数据提供程序。利用它们可设计出更为强大的Web程序, 使程序员可更容易地访问Web数据库:

3.1 Dataset

Dataset可以实现独立于任何数据源的数据访问, 可以用于多种不同的数据源, 也可以用于XML数据, 还可以用于管理应用程序本地的数据。

3.2. NET数据提供程序

.NET数据提供程序包括Connection、Command、Data Reader和Data Adapter对象, 可以实现数据操作和对数据的快速、只进、只读访问。访问不同的数据库可以使用不同的.NET数据提供程序, 如利用SQL Server.NET数据提供程序访问SQL Server数据库, 利用Ole Db.NET数据提供程序访问Access简单的数据库源。

(1) Connection提供与数据源的连接

(2) Command用于返回数据、修改数据、运行存储过程, 以及发送或检索参数信息的数据库命令。

(3) Data Reader用于从数据源中提供高性能的数据流。

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

4. 配置.NET for Oracle

(1) 安装.NET平台

安装.NET Framework version 1.0及其以上版本, 同时, 还要安装了数据访问组件 (MDAC 2.6及其以上版本)

(2) 要访问Oracle数据库的数据, 那么还需要安装Oracle 8Release 3 (8.1.7) Client及其以上版本。

5. ASP.NET 2.0访问Oracle数据库

.NET for Oracle组件中用于组织类和其他类型的名字空间是System.Data.Oracle Client。在此名字空间中, 主要包含四个核心类, 它们分别是:Oracle Connection、Oracle Command、Oracle鄄Data Reader、Oracle Data Adapter。下面将通过示例使读者了解使用这些类的有关情况。这四个类是ADO.NET中最基本也是最核心的对象。

使用ASP.NET通过ADO.NET操作Oracle数据库, 主要有以下几个步骤:

5.1 添加Oracle Client组件

ASP.NET2.0里默认不能直接添加using System.Data.Ora鄄cle Client;在填加引用的.NET组件框里选择System.Data.Oracle鄄Client添加后才能, 使用using System.Data.Oracle Client;添加Or鄄acle Client名字空间。

5.2 确定数据源, 连接数据库。

例如, 使用以下的连接字符串, 可以连接服务名为Orcl的数据库。

(1) 建立ADO.NET的连接对象-Connection对象, 并设置连接字符串

(2) Connection类的"Open"方法打开数据库

5.3 使用Command对象来执行命令并从数据源返回结果。

该对象常见的构造函数包含两个参数, 一个是要执行的SQL语句, 一个是已经建立的Connection对象。如语句:Obj Cmd=new Oracle Command (str SQL, obj Conn) , 其中str SQL参数代表需要执行的SQL语句, obj Conn代表前面已经建立的Connection对象。

Command对象依据不同SQL语句, 使用不同的执行命令。

(1) Execute Non Query:该方法用于执行不需要返回结果的命令, 如DDL、DML、DCL等语句。

(2) Execute Scalar:该方法返回单个值, 一般用来执行聚合函数。

(3) Execute Reader:该方法主要用来执行基本SQL查询语句, 要求SQL语句返回记录集。使用该方法将返回一个Data Reader对象, Data Reader对象是一个仅向前的只读数据流。

5.4 利用Data Reader对象从数据库中获取仅向前的只读数据流, 并显示。

(1) 利用Command对象的Execute Reader方法, 创建Data Reader对象

Oracle Data Reader dr=Obj Cmd.Execute Reader ()

(2) 获取Data Reader对象数据并显示有两种方法:

·通过和Data Grid等数据控件绑定, 直接输出;

·利用循环将其数据输出。

5.5 关闭Data Reader对象和数据库

通过Data Reader对象和Connection对象的close方法执行关闭操作, 防止占用资源。

5.6 其他对象

Data Reader对象数据并显示, 是.NET中一种比较简单的用法, 除此之外, 还可以使用Data Adapter对象结合Data Set等其他对象获取数据库数据, 可以给程序员提供更为强大的功能, 读者可以参考相关专门资料。

6. ADO.NET访问Oracle数据库实例

下面结合一个简单的用户注册实例给出一个ASP.NET通过ADO.NET访问Oracle数据库的设计实例, 介绍ADO.NET技术的典型应用。

6.1 创建用户表

在Oracle数据库中建立一个名为user的表, 其中Email为用户名 (主键) , password为密码。

6.2 设计用户注册界面

Demo界面:Default.aspx

1、在界面上添加两个Text Box控件:

(1) t Email用于输入用户email

(2) t Password用于输入注册密码

2、在界面上添加一个Button

b Reg

3、一个Label

l Lable用于注册成功后显示应答

6.3 配置Web.config文件

我们先把数据的连接字符串写在网站的Web.config文件里:

6.4 Demo的关键代码:Default.aspx.cs

下面是Demo源代码的关键部分:

7. 结束语

.net是目前Web程序开发的主流技术, 本文介绍了通过A鄄DO.NET访问Web数据库的常见组件的使用, 针对多数文献介绍.net时都使用SQL Server数据库, 而Oracle数据库在市场中占有很大份额, 使用较为广泛, 本文通过一个简单的实例, 介绍了如何连接、操作Oracle数据库, 希望对读者学习、使用ADO NET技术开发Web程序有所帮助。

参考文献

[1].蔡翠平《网络程序设计-ASP》清华大学出版社、北方交通大学出版社2002

[2].丁贵广、郭宝龙《ASP动态网站建站实例与技巧》西安电子科技大学出版社2001

[3].李继武《Visual C#.NET项目开发实战从入门到精通》清华大学出版社2007

[4].王建化汤世明谢吉容等《ASP.NET 2.0动态网站开发技术与实战》电子工业出版社2007

ADO访问数据库 篇7

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访问数据库 篇8

1 Ado.net组件体系结构

Ado.net对Microsoft SQL Server数据库和XML等数据源提供一致的访问。我们可以使用Ado.net来连接到这些数据源, 并检索、处理和更新所包含的数据。

Ado.net组件将数据访问与数据处理分离。它是通过两个主要的组件:.NET数据提供程序 (Data Provider) 和Dataset来完成这一操作的。图1说明了数据访问与数据处理分离的概念。Ado.net体系结构的一个核心元素是.Net数据提供程序, 它是专门为数据处理以及快速地只进、只读访问数据而设计的组件, 包括Connection、Command、Data Reader和Data Adapter对象的组件。[1]

Data Set是Ado.net体系结构中另一个核心组件, 它是专门针对各种数据源的数据访问独立性而设计的, 所以它可以用于多个不同的数据源。Data Set包含一个或多个Data Table对象的集合, 这些对象由数据行和数据列, 以及有关Data Table对象中数据的主键、外键、约束和关系信息组成。它相当于内存中的一个数据库, 但从不关心它的数据是从数据库中、XML文件中还是其他什么数据源中获得。

2 Ado.net访问数据库的两种模式

针对不同的数据源访问需求, ADO.NET为我们提供了两种连接数据库的方式:连接模式和断开模式。[2]

2.1 基于连接模式下数据库访问技术

对数据的读取和操作在断开数据库连接之前, 这样的工作方式称为连接模式, 使用Data Reader对象来实现。Data Reader从数据库中检索只读、只进的数据流。查询结果在查询执行时返回, 并存储在客户端的网络缓冲区中, 直到用户使用Data Reader的Read方法对它们发出请求。使用Data Reader可以提高应用程序的性能, 原因是它只要数据可用就立即检索数据, 并且一次只在内存中存储一行, 减少了系统开销。连接模式访问数据库数据原理如图所示。

由于Data Reader允许对数据库进行直接、高性能的访问, 它只提供对数据的只读和只向前的访问, 它返回的结果不会驻留在内存中, 并且它一次只能访问一条记录, 对服务器的内存要求较小, 而且, 只使用Data Reader就可以显示数据。所以, 只需要显示数据的应用程序, 尽量使用Data Reader, 因为它将提供最佳的性能。

2.2 基于断开模式下数据库访问技术:

而对数据的读取在断开数据库连接之后, 这样的工作方式称为断开模式, 使用Data Adapter对象和Data Set对象配合实现。通过Data Adapter对象, 向Data Set中填充数据。Data Adapter对象充当数据库和Data Set之间的桥梁。能够用来保存和检索数据。Data Adapter对象的Fill方法用于将查询结果填充到Data Set中, 以便能够实现离线处理数据。Data Set从数据源中获取数据以后就断开了与数据源之间的连接。允许在Data Set中进行增、删、改以及查等各种操作。当完成了各项操作以后还可以把Data Set中的数据送回到数据源。断开模式访问数据库数据原理如图3所示。

3 数据库访问技术的具体实现

3.1 数据库连接的实现

下面的代码通过ADO.NET连接到本地SQL Server中的student数据库。

3.2 从数据源中读取数据的实现

读取数据我们可以采用两种方法实现, 一种是通过Data Reader对象在连接模式下实现, 另一种是通过Data Adapter对象和Data Set对象配合使用的离线模式下实现。

1) 连接模式实现对数据库中数据的读取操作, 代码如下:

2) 断开模式下实现对数据库中数据的读取操作, 代码如下:

3.3 操作数据库中数据的实现

1) 在连接模式下, 主要使用Command对象通过执行SQL命令来操作数据库。下面通过实例来实现对数据库中数据的操作。代码如下:

对于上面的代码, 只要改变SQL语句就可以实现对数据库中数据的添加、删除以及修改等操作。

2) 利用Data Set对象可以实现在断开模式下对数据库数据的添加、删除以及修改操作。当添加数据时, 具体实现代码如下:

当要删除数据时, 可以通过Data Row对象的Delete方法删除当前行。更新数据集和添加、删除数据的操作类似, 首先获得DataSet的某个数据表的Data Table对象, 然后再获得要更新数据的行对象Data Row, 最后直接对Data Row对象进行修改, 并更新数据库即可完成数据的修改工作。

4 结束语

应用程序访问数据库中的数据时, 既可以使用Data Reader对象从数据库中读取数据, 又可以使用Data Set对象将数据放在本地内存中, 但两者存在一定的差异。[3]

总之, 两者各有优缺点, 具体使用哪种对象需要具体问题具体分析。当数据量较少, 不需要缓存数据时, 可以使用Data Reader;当数据来源于多个数据库, 为减轻数据库服务器的负担, 则可以考虑使用Data Set。

摘要:在B/S模式或C/S模式系统开发中, ADO.NET对象是前台页面 (或窗体) 与后台数据库之间的重要桥梁。通过ADO.NET对象的数据库访问技术, 可以实现对数据库中数据的读取、插入、修改和删除等操作。首先介绍了Ado.net组件的体系结构, 其次分析了Ado.net数据库访问技术的两种模式, 最后针对这两种模式, 通过实例实现了应用ADO.NET的数据库访问技术。

关键词:ADO.NET,B/S,C/S,数据库访问技术

参考文献

[1]张联锋, 陈文臣.ASP.NET3.5程序设计与项目实践[M].北京:电子工业出版社, 2011.

[2]刘维岗.基于AS P.NET的数据库访问技术研究与实现[J].信息时代, 2012, 2:50-53.

上一篇:现代零售企业下一篇:电流异常