什么才是进步ASP机能的最佳选择(续二)
发布时间:2020-12-28 18:20:46 所属栏目:编程 来源:网络整理
导读:当行使一个记录集时,是否应该建设一个单独的Connection工具? 要想正确答复这个题目,必要在两个差异环境下检讨测试功效:第一是每页执行一个数据库处理赏罚的环境,第二是每页执行多个数据库处理赏罚的环境。 在前面的例子中,我们已经建设了一个单独的Connection对
当行使一个记录集时,是否应该建设一个单独的Connection工具? 因此,我们的第二个法则是: * 当行使一个单个记录集时,将毗连字符勾串报到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 属性中一再行使它。 指针和锁的范例中,哪些是最有用的? 到今朝为止,我们全部测试都只用了只向前(Forward Only )的指针在记录齐集轮回。可是,ADO还为记录集提供了3种范例的指针:Static(静态),Dynamic(动态)和 Keyset(键盘)。每一种都提供了特另外成果,好比向前和向后移动以及当别人成立数据时可以看到修改环境的成果。不外,接头这些指针范例的内在不是本文接头的范畴。我把这些留给你本身。下面是各类范例的较量说明。 从本质上说,同样的题目也合用于锁的范例。前面的测试中只行使了Read Only(只读)范例的锁。可是,尚有三种范例的锁:Lock Pessimistic、 Lock Optimistic和Lock Batch Optimistic。同指针的选择一样,这些锁也为处理赏罚记录齐集的数据提供了特另外成果和节制。同样,我将进修每种锁配置的恰当用途的内容留给你本身。 获取一个记录集最好的方法是什么? 到今朝为止,我们只是通过Recordset 工具来规复记录集。可是ADO还提供了一些获取记录集的间接要领。下一个测试就将ADO__03.asp 中的值与直接从一个Connection工具中建设一个记录集工具( CONN_01.asp )来较量。 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 通过Recordset 类建设一个记录集对付节制如那里理赏罚记录集提供了最大的机动性。固然其余要领也没有提出一个压倒性的机能题目,可是你会被默认状态下返回何种指针范例和锁范例而狐疑,这些对付你的特定需求来说不必然是最优的。 以是,除非由于某种非凡缘故起因你必要其余要领的话,请遵循第5条法则:通过ADODB.Recordset 类例示记录集以得到最好的机能和最大的机动性。 是否应该断开记录集? ADO为断开一个记录集提供了一种选择,记录集要在一个向前查询中规复全部数据、封锁毗连、行使一个当地(或客户)指针在数据齐集移动。这还提供了一个早期开释毗连的机遇。这种环境对付处理赏罚长途数据处事是须要的,由于这种环境下数据必需从数据库断开。可是对付平凡的用途,这样做有甜头吗? 下面我们增进了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是这样的:除非是一个断开的情形中所要求的,停止行使断开的记录集。 什么是配置记录集属性的最好要领? 前面全部的测试都是通过单独的属性配置来直接配置记录集的属性的。可是Recordset.Open 函数可觉得我们所必要的全下属性吸取特另外参数。固然对付每个属性来说,单独的代码行易于阅读和维护,它们照旧要别离执行一个单独函数挪用,必需通过COM界面来荟萃( ADO__07.asp ): Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open Application("SQL"),Application("Conn"),1 ' adForwardOnly,adLockReadOnly (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |