打印本文 关闭窗口 | |
提高ASP性能的最佳选择(续二) | |
作者:不详 文章来源:瓷都热线http://cidu.net 点击数 更新时间:2003/4/13 文章录入:不详 责任编辑:不详 | |
|
|
在前面的例子中,我们已经创建了一个单独的Connection对象,并将它传递到记录集的ActiveConnection 属性。但是也有可能仅仅把连接字符串传递到这个属性中,从而可以避免一个额外的步骤,即在脚本( ADO__03.asp )中例示和配置一个单独的组件: objRS.ActiveConnection = Application("Conn")
因此,我们的第二个规则是: http://www.cidu.net * 当使用一个单个记录集时,将连接字符串传递到ActiveConnection属性中。 下面要确定当在一个页面上创建多个记录集时,这个逻辑是否依然成立。为测试这个情况,我引入了FOR 循环,将前面的例子重复10次。在这个测试中,我们还将研究3种选择: 第一,我们在每个循环中创建并销毁Connection 对象( ADO__04.asp ): Dim i For i = 1 to 10 Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open Application("Conn") Set objRS = Server.CreateObject("ADODB.Recordset") objRS.ActiveConnection = objConn objRS.CursorType = 0 'adOpenForwardOnly objRS.LockType = 1 'adLockReadOnly objRS.Open Application("SQL") If objRS.EOF Then Response.Write("No Records Found") Else 'write headings ... 'write data ... End If objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing Next 第二,在循环外创建一个单独的Connection 对象,并与每个记录集共享它( ADO__05.asp ): Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open Application("Conn") Dim i For i = 1 to 10 Set objRS = Server.CreateObject("ADODB.Recordset") objRS.ActiveConnection = objConn objRS.CursorType = 0 'adOpenForwardOnly objRS.LockType = 1 'adLockReadOnly objRS.Open Application("SQL") If objRS.EOF Then Response.Write("No Records Found") Else 'write headings ... 'write data ... End If objRS.Close Set objRS = Nothing Next objConn.Close Set objConn = Nothing 第三,在每个循环中将连接字符串传递到ActiveConnection 属性( ADO__06.asp ): Dim i For i = 1 to 10 Set objRS = Server.CreateObject("ADODB.Recordset") objRS.ActiveConnection = Application("Conn") objRS.CursorType = 0 'adOpenForwardOnly objRS.LockType = 1 'adLockReadOnly objRS.Open Application("SQL") If objRS.EOF Then Response.Write("No Records Found") Else 'write headings ... 'write data ... End If objRS.Close Set objRS = Nothing Next
尽管如此,我们的第3条规则是: * 在一个页面上使用多个记录集时,创建一个Connection 对象,在ActiveConnection 属性中重复使用它。 指针和锁的类型中,哪些是最有效的?
从本质上说,同样的问题也适用于锁的类型。前面的测试中只使用了Read Only(只读)类型的锁。但是,还有三种类型的锁:Lock Pessimistic、 Lock Optimistic和Lock Batch Optimistic。同指针的选择一样,这些锁也为处理记录集中的数据提供了额外的功能和控制。同样,我将学习每种锁设置的适当用途的内容留给你自己。
获取一个记录集最好的方式是什么? Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open Application("Conn") Set objRS = objConn.Execute(Application("SQL"))
然后,我们看看从一个Command 对象中直接创建一个Recordset 对象( CMD__01.asp ): Set objCmd = Server.CreateObject("ADODB.Command") objCmd.ActiveConnection = Application("Conn") objCmd.CommandText = Application("SQL") Set objRS = objCmd.Execute
所以,除非因为某种特殊原因你需要其它方法的话,请遵循第5条规则:通过ADODB.Recordset 类例示记录集以获得最好的性能和最大的灵活性。 是否应该断开记录集? 下面我们增加了CursorLocation 属性,打开记录集后关闭连接( CLIENT1.asp ): Set objRS = Server.CreateObject("ADODB.Recordset") objRS.CursorLocation = 3 ' adUseClient objRS.ActiveConnection = Application("Conn") objRS.LockType = 1 ' adLockReadOnly objRS.Open Application("SQL") objRS.ActiveConnection = Nothing
规则6是这样的:除非是一个断开的环境中所要求的,避免使用断开的记录集。 http://www.cidu.net 什么是设置记录集属性的最好方法? Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open Application("SQL"), Application("Conn"), 0, 1 ' adForwardOnly, adLockReadOnly
|
|
打印本文 关闭窗口 |