ADO.NET框架

ADO.NET 支持两种数据访问模式:connected    disconnected

 

连接模式数据访问:

ADO.NET Framework提供的核心类:

1、Connection     连接

2、Command        执行应用于数据源的命令

3、DataReader     获取数据源中的数据

ADO.NET使用接口提供(Provider)模型,使用多组不同的数据访问类来与不同的数据源进行通信。对应的基类分别为:DbConnection, DbCommand,  DbDataReader, 存在于System.Data.Common

   

Connection对象

     原则:尽可能晚的打开连接,尽可能早的关闭它。必须确保发生异常时数据库连接都会被关闭。利用 Using()语句     try {} catch {} finally {}

 

1、获取提供程序统计信息  StatisticsEnabled----开启获取统计信息的功能

                         RetrieveStatistics()—IDictionary集合获取统计信息

2、使用连接池提高性能

默认开启连接池,ADO.NET framework 最多能在连接池中保持100个打开的连接。执行关闭连接的操作并不会真正的关闭数据库服务器端的连接,而是将连接放回到连接池中。尽量将数据库连接字符串放在站点配置(web.config)文件中。

 

Command 对象

SqlCommand.ExecuteNonQuery()   不返回任何结果数据集,执行Update , Delete , Insert 命令,也可以执行 Create table Drop database 命令

 

SqlCommand.ExecuteScalar()  返回查询结果集中的第一行第一列的那个数据值,返回值类型统一为Object

 

SqlCommand.ExecuteReader()  返回一个SqlDataReader对象,使用该对象可以从数据库中逐行读取数据集记录。

 

CommandName.ExecuteReader(CommandBehavior.CloseConnection),该参数会使数据库连接和SqlDataReader 对象关联起来,当从SqlDataReader对象中读取了所有数据记录后,连接将会自动关闭,缺点是不能添加异常处理代码。

 

添加参数常用方法: CommandName.Parameters.AddWithValue(“@name”,name)

使用AddWithValue()方法,SqlCommand对象自动识别并推测参数的类型和大小。

 

SqlParameter.ParameterDirection:  Input  /  InputOutput  /  Output  /  ReturnValue  参数表示诸如存储过程,内置函数操作的返回值

 

 

DataReader 对象

 

通过检查HasRows属性或者调用Read()方法,判断DataReader对象表示的查询结果中是否包含数据行记录。

在任意时刻上DataReader对象只表示结果集中的一行记录。

 

1、    返回多个结果集

利用  SqlDataReaderName.NextResult();返回查询结果中的下一个结果集,返回值为true false

2、    使用MARS(  Multiple  Active Resultsets  ,多活动结果集 )

必须在数据库连接字符中,指定MultipleActiveResultSets=true 程序对一个结果集进行遍历的过程中,同时对当前结果集中的记录执行数据库操作。

   

非连接模式数据访问

       核心对象1DataAdapter  物理存储模式下的数据和内存之间进行交换。

                       2DataTable    内存中的数据库表 ,跟踪数据记录的改变

                       3DataView     内存中的数据库视图,对数据过滤和排序

                       4DataSet       内存中的数据库

 

缺点:性能变低,占用大量的硬件资源。尽量使用DataReader对象访问数据库。

 

 

1、DataAdapter  获取数据装入DataTable中,将DataTable对象中数据写回到物理数据库中。

 

调用Fill() 方法,SqlDataAdapter  对象会自动创建并打开数据库连接,从数据库中获取数据后,Fill() 方法自动关闭数据库。Fill() 方法会保持传入供其使用的数据库的连接状态,如果数据库已打开,它将不自动关闭。

 

SqlDataAdapter 可看作是四个对象的集合: SelectCommand , UpdateCommand, InsertCommand , DeleteCommand

 

如果调用SqlDataAdapter 对象的Update() 方法, 并将该方法传递给DataTable对象,那么SqlDataAdapter 对象将调用其 UpdateCommand,InsertCommand, DelteCOmmand 来更改数据库。

 

SqlCommandBuilder 类得到了带有Select 命令的 SqlDataAdapter 对象后会自动生成 UpdateCommand, InsertCommand, DeleteCommand 三个命令。

 

设置 UpdateBatchSize属性设置为一次批执行所希望处理的命令数量,0表示服务器一次处理的最大批大小, 1 表示禁止批量更新 

 

2、DataTable

      DataRows    利用DataTable.Select() 获取任意数据行,返回一个DataRow对象数组

 

DataTable 对象每个数据行有一个RowState 属性:

Unchanged/ Added/Modified/Deleted/Detached(数据行已创建,未加入DataTable)

 

DataTable 对象每个数据行有一个DataRowVersion属性:

Current(数据行的当前版本)/Default(数据行的默认版本)

/Original(数据行的原始版本)/Proposed(数据行的修改版本)

 

DataTable.AcceptChanges()  //当前版本复制到原始版本

DataTable.RejectChanges()  //原始版本复制到当前版本

 

 

3DataView

   三个非常重要的属性:

              Sort  --------排序

              RowFilter    -----过滤

              RowStateFilter -对数据行依照状态进行过滤(OriginalRows,CurrentRows

 

   DataTable.DefaultView 返回的是一个未排序未过滤的数据视图。

 

 

 

4DataSet  :  多个DataTable 表之间的关系                     

 

数据库的异步执行

1、用于同时执行多个数据命令显著提高应用程序性能。尤其是数据库命令在不同的数据库服务器端上执行。

2、ASP.NET Framework 使用有限的线程池为服务页面需求。

 

开启数据库连接的异步执行功能: AsynchronousProcessing = true

在使用异步ADO.NET方法时,必须启用ASP.NET页面的异步执行选项。

<%@ Page Async=”true” AsyncTimeout=” 8” %>

 

 

 

注意:1、存储过程只默认一个返回值,而且类型必须为整数,如果要得到更多的返回值则需要使用输出参数。

           2、尝试对输出参数值进行读取时必须先关闭SqlDataReader对象。

           3、格式转换 String.Format(“{0 : c }”, variable)

                     Variable.ToString(“c”);

           4Page 属性:MaintainScrollPositionOnPostback  可以使页面在回发后定位到同样的位置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值