ADO.NET提供了从不同数据源访问数据的结构,在ADO.NET中数据访问可以分为三层 (如下图所示)。
- 物理层数据存储:可以访问OLE数据库,SQLserver数据库 或者xml文件。即图中的各种数据库/数据源;
- 数据集:在应用程序中处理表和关系的缓存数据的表现形式,一般是在电脑内存中有一定空间;
- 数据提供程序:包括Connection对象、Command对象、DataReader 对象,和DataApdapter对象,用于创建数据在内存中的表现形式。
在ADO.NET结构中,常用的组件(对象)有五个,Connection对象、 Command对象、DataReader对象、DataApdapter对象和DataSet对象,其中Connection对象、Command对 象、DataReader对象,和DataApdapter对象被称为数据提供程序,数据提供程序中包含了各种用于访问存储在各种数据源中的数据对象,是 这些数据提供程序可以对数据进行检索和相关操作。同时数据提供程序还方便了数据集合数据表的交互,以实现对数据的检索,删除,添加。
- Connection对象
Connection对象应用于应用程序与数据库的链接。Connection对象常用的属 性和方法:
ConnectionString |
链接SQL数据库的形式:server=localhost;database=Northwind;user id=sa;password=;(这是我们在SQL中最为经常用的) |
Database |
获取当前数据库或者要打开要使用的数据库的名称 |
方法 |
说明 |
Open |
使用ConnectionString所在指定的属性设置打开的数据库连接 |
Close |
关闭数据库,这是所有关闭数据库的首选方法 |
在建立数据库连接时,可以添加连接池,这样可以显著提高应用程序的性能和可缩放性。 SQLserver.NET Framework数据提供程序将自动为ADO.NET客户端应用程序添加连接池,也可以定义字符串来控制连接池。下表为一些关键字控制连接池的行为。
名称 | 说明 |
Max Pool Size | 连接池的最大连接数。默认值为100 |
Min Pool Size | 连接池的最小连接数。默认值为0 |
Open | 打开数据库的连接 |
Pool | 当为“true”时,可从池中取出连接,或者创建新的连接并添加到相应的池中 |
- Command对象
Command对象允许对数据库进行操作,建立连接后,可通过该对象对数据库下达命令,在对 数据库进行存储等一些操作时,需要先把DataReader关闭,Command对象的属性及其方法如下:
属性 | 说明 |
CommandText | 设置要执行SQL语句 |
CommandType | 设置一个值,该值指示SQL语句还是存储过程 |
Connection | 设置Command使用的Connection |
Parametrs | 参数集合 |
Transaction | 获取设置将在其中执行的Command的Transaction |
方法 | 说明 |
Executenonquery | 执行SQL语句并返回受影响的行数。用于添加,删除,更改,但是不能查询 |
Executereader | 将Commandtext发送到Connection并生成DataReader,一般对 DataReader实例化,可查询。 |
Executescalar | 执行查询,并将结果中的第一行的第一列返回 |
- DataReader对象
DataReader对象是对数据库进行读取,并且时刻与服务器保持连接,不需要时一定要关 闭,一边不浪费服务器资源,否则DataReader对象会一直顺序读取下去,DataReader对象可通过Command对象进行实例化。
方法 | 说明 |
Close | 关闭DataReader对象 |
GetValue | 获取以本机格式显示表示的列的值 |
GetValues | 获取当前行的集合中的所有属性列 |
IsDBNull | 获取一个值,该值指示列中是否包括含有不存在的或缺少的值 |
Reader | 使DataReader前进到下一个记录 |
当已经创建Command对象的实例化,我们可调用 Command.ExecuteReader从数据源中检索行,从而创建DateRerder,如下:
SqlDataReader myReader=myCommand.ExecuteReader();
使用DataReader对象的Reader方法可以从查询结果中获取行,同时DataReader还提供一系列的方法用于访问本机数据类型(GetDateTime、
GetDouble、GetGuid、GetInt32等形式)的列值。需要注意的是当DataReader打开时,该DataReader将以独占的方式使用Connection。
- DataApdapter对象
DataApdapter对象主要用于对数据的索引(这一点和DataReader功能一 样)和填充DataSet中的表,DataApdapter对象可以对数据集做一些更改比如删除,添加等。DataApdapter使用数据提供程序的 Connection对象对数据源进行连接,使用Connection对象对数据源中的数据进行索引以及修改,并将更改解析回数据源。其主要的属性及其方 法如下:
属性 | 说明 |
SelectCommand | Command对象,对数据源进行检索 |
InsertCommand | Command对象,对数据源中的数据进行添加、插入 |
UpdateCommand | Command对象,对数据源中的数据进行升级、更新 |
DeleteCommand | Command对象,对数据源中的数据进行删除 |
方法 | 说明 |
Fill | 一般是把检索到数据填充到已定义好的数据集中 |
Updata | 为已修改的数据集的行调用相应的Insert、Update、Delete语句 |
DataApdapter对象是与服务器断式的,DataApdapter创建的对象为数据 适配器,能对数据源进行一些的操作,这是和DataReader对象(只读)的不同点。
- DataSet对象
数据集比较抽象的概念,它的作用是将从从数据库检索到的数据存储到用户已定义的数据集中,数 据集可以说是一个简单的数据库,但是它是断开式的,存储在内存中的,可以将任意的数据源中检索到的数据加载到数据集。数据集的组成和数据库几乎是一样的, 他有数据行、列、约束和有关对象中的数据关系的信息组成。创建数据集,数据集实例通过DataSet构造函数来创建,例如创建下面的空数据集:
DataSet ds=new DataSet();
以上五个ADO.NET对象就可以通过ADO.NET创建数据的链接、对数据进行基本的操作、以及对数据的修改等。ADO.NET的强大之处还在于 ADO.NET不但可以处理数据库中的数据,而且还可以处理其他数据存储方式中的数据,比如,XML格式、EXCEL格式和文本格式的数据。
本文转自shenzhoulong 51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/315365,如需转载请自行联系原作者