知识大全 使用Command 和DataReader对象加速访问
Posted 知
篇首语:初心不与年俱老,奋斗永似少年时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用Command 和DataReader对象加速访问相关的知识,希望对你有一定的参考价值。
使用Command 和DataReader对象加速访问 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
用SqlClient的Command 和DataReader对象代替ADODB能极大地提高性能 当开发人员用现有的VB 代码测试Visual Studio NET的发行版时 Visual Basic Upgrade Wizard会超时 该Wizard并不是全能的 但我发现它很适合升级复杂程度适度 数据驱动的VB 客户端和中间层组件 如果你在VB 代码中指定缺省对象属性——如txtWhatever Text和Recordset Fields(n) Value 那么创建Wizard生成的Visual Basic NET代码所需做的修改就相当少了 当Wizard遇到数据访问代码 它就会跳过去 客户端应用程序或组件最后形成一个ADODB x 参照原来的MDAC版本 数据访问代码保持不变 除了IsNull由IsDbNull代替 这时 你可能会产生这样的实际想法 如果升级的版本可以用 为什么还要修改它? 这就是给SQL Server 用户的回答 将ADODB Connection Command和Recordset对象移植成ADO NET中SqlClient相当的轻量级的对象 会加速你的数据密集的前端 中间层组件和ASP NET XML Web services 我迄今所做的测试表明 从ADODB移植到SqlClient 你可以期望有 %或更高的性能增益 对SQL Server 和 来说 NET Framework的System Data SqlClient名字空间代表了 NET Data Provider(原来的 managed provider ) SqlClient通过与SQL Server以其本地的Tabular Data Stream (TDS) 格式直接通讯 去掉了ADODB和OLE DB SqlConnection和SqlCommand对象相当于ADODB Connection和ADODB Command 对象 并有类似的——但并不是同样的——属性和方法 SqlDataReader对象为只能向前的 只读的(firehose) ADODB Recordsets提供了一个高性能的替代品 你用SqlDataAdapter填充DataSets中的分离的DataTables 微软把这四个Sql…对象称为 NET Data provider的 核心元素 为了做前/后性能比较 我对我的样例OakLeaf Consumer Electronics Windows form 客户端 (OCE Client 见图 )及其四个ASP NET XML Web services做了升级 从ADO/OLE DB 转换到ASP NET的SqlClient provider 这花了我约一天的时间(包括初始测试) 通过点击OakLeaf Web site中的OCE Client链接 你可以测试OCE Client的ASP NET版本 并对Windows form版本和它所使用的ASP NET XML Web services有更多了解 从ADODB转到SqlClient对象的第一步就是在你的Class声明前 增加一个Imports System Data SqlClient的声明 将cnnName= New ADODB Connection改成cnnName = New SqlConnection 从连接字符串中去掉Provider = SQLOLEDB SqlConnection指定了SqlClient provider 最后 用Open( )方法打开连接 下面是OmegaBank VerifyOrHold Web 方法(见列表 )中的一段例子 Dim cnnVerify As New SqlConnection() strNetConn = Data Source= & strServer & ;Initial Catalog=OMB_Neork;UID= & strUser & ;PWD= & strPwd cnnVerify ConnectionString = strNetConn cnnVerify Open() 你不能直接在一个SqlConnection对象上打开ADODB Recordset的SqlClient相当对象 作为替代 你可以在打开的SqlConnection上创建一个SqlCommand对象 如下例 strSQL = SELECT COUNT(MerchantID) FROM Merchants & _ WHERE MerchantID = & CStr(lngMerchantID) Dim cmmVerify As SqlCommand = cnnVerify CreateCommand With cmmVerify CommandType = CommandType Text CommandText = strSQL If CInt( ExecuteScalar()) = Then Not found End If End With 作为选择 你可以将一个打开的SqlConnection对象赋值到一个新的SqlCommand Connection属性 如下例 Dim cmmVerify As New SqlCommand Dim rdrVerify As SqlDataReader With cmmVerify Connection = cnnVerify CommandType = CommandType Text CommandText = strSQL rdrVerify = ExecuteReader() End With 这些例子说明了三个SqlCommand Execute…方法的两个 ExecuteScalar返回行集合的第一(通常是唯一的)行的第一列的值 ExecuteReader返回一个SqlDataReader对象 每用一次Read方法 该对象返回一列 两种方法都是快速的 并消耗最少的资源 在你用Close方法前 SqlDataReader需要专用相关的SQL Server连接 第三个SqlCommand方法是ExecuteNonQuery 它不返回数据 SqlDataReader对象的行为与XmlReader和TextReader对象很像 读取器在相当于ADODB Recordset的BOF位置启动 如果有另一个记录需要读 Read方法返回True 你在一个While sdrReader Read() End While的回路中来回读取数据 用sdrReader GetDataType (intColumn)方法得到你指定的本地 NET数据类型中的列的数据 新的SqlTransaction对象代替了ADODB Connection对象的CommitTrans CommitTrans和RollbackTrans 方法 作为替代 你声明一个SqlTransaction对象 通过调用SqlConnection BeginTransaction方法创建它 下面是摘自OmegaBank ChargeOrCredit Web方法的一个简单的SqlTransaction代码(见列表 ) Dim cmmCharge As [New] SqlCommand Dim trnCharge As SqlTransaction With cmmCharge Instantiate the SqlTransaction object trnCharge = cnnCharge BeginTransaction strSQL = INSERT UPDATE or DELETE statement Assign the SqlTransaction object to the SqlCommand object Transaction = trnCharge CommandText = strSQL lngReccnt = ExecuteNonQuery If lngReccnt < > Then Or some other test Error so roll back trnCharge Rollback() End If curTransactAmt = curTransactAmt strSQL = _ Another INSERT UPDATE or DELETE statement CommandText = strSQL lngReccnt = ExecuteNonQuery If lngReccnt = Then Or yet another test Success so mit trnCharge Commit() Else trnCharge Rollback() End If End With SqlTransaction对象的一个附加的优点是它支持部分返回操作用的T SQL指定的交易保存点 表 显示增加 个定单到OakLeaf Consumer Electronics应用程序样例的六个数据库所需的平均秒数 两个 Local 配置(单一的服务器)和第一个 Remote 配置测量了将客户端和组件或者XML Web services从ADO/OLE DB移植到SqlClient性能方面的改进 Remote XML Web services运行在另一个服务器上 该服务器通过一个 Mpbs的LAN与客户机相连 service upgrades only 配置只测量移植XML Web services的好处 这两个测试都用升级的OCE Client测试工具 的确 你的得数会不同 但是 你可以打赌 通过转换成SqlClient对象 你的数据密集的客户端 组件和XML Web services将会得到 %到 %的性能增益 另外 你排除了对微软遗留的组件的依赖 如果SQL Server是你的目标数据库 SqlClient就是应该用的 NET方式 cha138/Article/program/net/201311/12801相关参考
C#中DataReader类的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! using
知识大全 ADO.NET详细研究 -- DataReader终结篇
ADO.NET详细研究--DataReader终结篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java执行Shell&Command 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 主要使用R
Java设计模式-----Command模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 源自
Java设计模式之Command模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Comman
java设计模式之Command(菜单命令) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Co
怎样用SQL2000生成XML 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Command对象
ASP存储过程的使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一使用Command对象
家住上海卢湾区的朱粉英老人今年已有103岁的高龄,虽说随着年龄的增长,耳朵有点背,眼也有点花,但看上去仍然是那么的精神,仿佛90来岁的模样。那么朱老太的养生之道又是什么?日前,笔者来到老人的家中,走访
“查看”和“察看”有什么区别查:考察:检~。调~。~验。~访。~阅。察:仔细看,调查研究:~看。~核。观~。考~。~觉。~访。~勘。~探。明~秋毫(“秋毫”指秋天鸟兽身上新长的细毛,喻为人精明,任何小