ADO.NET是一组用于和数据源进行交互的面向对象类库,它提供了平台互用性和可伸缩的数据访问,ADO .NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。
ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过NET的ADO .NET类库来进行连接。
ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。
ADO.NET是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,开发人员将使用相似的对象与数据源进行交互。
几大对象叙述
Connection 对象
Connection对象称为数据库连接对象,Connetion对象的功能是负责对数据源的连接。Connection 对象也称为数据库连接对象,Connection 对象的功能是负责对数据源的连接。所有Connection 对象的基类都是DbConnection 类。
Connection 对象有两个重要属性:
ConnectionString :表示用于打开 SQL Server 数据库的字符串;
State :表示 Connection 的状态,有Closed 和Open 两种状态。
Connection 对象有两个重要方法:
Open() 方法:指示打开数据库;
Close() 方法:指示关闭数据库。
在操作数据库的时候,为了提高性能,都遵循一个原则: 数据库连接对象应该尽可能晚打开,尽可能早关闭 。
Command 对象
Command 对象也称为数据库命令对象,Command 对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command 对象的CommandType 属性设置为CommandType.StoredProcedure ,默认情况下CommandType 属性为CommandType.Text ,表示执行的是普通SQL 语句。
Command 主要有三个方法:
ExecuteNonQuery () :执行一个SQL 语句,返回受影响的行数,这个方法主要用于执行对数据库执行 增加、更新、删除操作 , 注意查询的时候不是调用这个方法 。
ExecuteReader () :执行一个查询的SQL 语句,返回一个DataReader 对象。
ExecuteScalar () :从数据库检索单个值。这个方法主要用于统计操作。
DataReader 对象
DataReader 对象是一个读取行的只读流的方式,绑定数据时比使用数据集方式性能要高,因为它是只读的,所以如果要对数据库中的数据进行修改就需要借助其它方法将所作的更改保存到数据库。
DataReader 对象读取数据有三种方式:
1.按查询的时候列的索引用指定的方式来读取列值,无需做相应转换,如GetByte (int i )就是读取第i 列的值并且转换成byte 类型的值。第这种方法的优点是指定列后直接将该列的直接读取出来了,无需再转换,缺点是一旦指定的列不能按照指定的方式转换时就会抛出异常,比如数据库里字段的类型是string 类型或者该字段的值为空时按照GetByte(i) 这种方式读取会抛出异常。
2.按照列索引的方式读取,在读取的时候并不进行值转换,如:reader[5] 就是读取第5 列的值(这里reader 是一个Reader 对象的实例),这样得到的值是一个object 类型的值,这也很好理解,因为在数据库可能存储各种类型的值,而object 是所有类的基类,所以这个方法不会抛出异常。如果要得到它的正确类型,还需要根据数据库里的字段进行进行相应转换。
3.按照列名的方式去读,并且在读的时候也不进行相应转换,得到的是object 类型的值。
综合前面三种方式各有特点,第一种方式最直接,但是有可能抛出异常,第二种方式比第一种稍微灵活一些,我们可以根据读取到值为空(在.net 里用DBNull 类来表示,可以表示数据库中任意数据类型的空值),我们就不进行相应的类型转换,避免出现异常。第三种方式按照列的名字来读取数据,也需要按照第二种方式进行一定的转换。就性能来说第一种最高,第二种稍低,第三种最低(这很好理解,假设要在一个旅馆里找人直通过房间号找肯定比通过名字找快),就灵活性来说第三种最灵活,第二种次之,第一种最不灵活(假如在后来编写SQL 语句中更改了列的索引,第一种和第二种都可能出现问题)。实际开发中根据实际情况选择合适的方式。
DataAdapter 对象
DataAdapter 对象也称之为数据适配器对象,DataAdapter 对象利用数据库连接对象(Connection) 连接的数据源,使用数据库命令对象(Command) 规定的操作从数据源中检索出数据送往数据集对象(DataSet) ,或者将数据集中经过编辑后的数据送回数据源。
DataSet 对象
DataSet 对象也称为数据集对象,DataSet 对象用于表示那些储存在内存中的数据,它相当于一个内存中的数据库。它可以包括多个DataTable 对象及DataView 对象。
DataSet 主要用于管理存储在内存中的数据以及对数据的断开操作。
由于DataSet 对象提供了一个离线的数据源,这样减轻了数据库以及网络的负担,在设计程序的时候可以将DataSet 对象作为程序的数据源。
DataTable 对象
DataTable 是 ADO.NET 库中的核心对象,就像普通的数据库中的表一样,它也有行和列。它主要包括DataRow 和DataColumn ,分别代表行和列。
DataRow 对象
数据行是给定数据表中的一行数据,或者说是数据表中的一条记录。它可能代表一个学生、一位用户、一张订单或者一件货物的相关数据。DataRow 对象的方法提供了对表中数据的插入、删除、更新和查看等功能
DataColumn 对象
数据表中的数据列( 又称字段) 定义了表的数据结构,例如,可以用它确定列中的数据类型和大小,还可以对其他属性进行设置。例如,确定列中的数据是否是只读的、是否是主键、是否允许空值等;还可以让列在一个初始值的基础上自动增殖,增值的步长还可以自行定义。
浙公网安备 33010602011771号