推薦:ASP實例:利用緩存提高數據顯示效率實例演示:先建立一個簡單的數據庫,寫個function讀取一下,寫入一個dim變量temp中:ASP代碼 以下為引用的內容:<% Function DisplayRec
以下為引用的內容: <% Dim oConn,oRs Set oConn = Server.CreateObject("ADODB.Connection") Set ors = Server.CreateObject("ADODB.RecordSet") oConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("db1.mdb") Session("conn") = oConn ors.open "select * from t1",Session("conn"),1,1 Response.write(oRs(0)) ors.close Set ors = Nothing oConn.close Set oConn = Nothing %> |
這是網上流傳的把Connection對象保存在Seesion對象中的代碼,注意其中的:Session("conn") = oConn,對象的復制就是這樣子的嗎?下邊我們來驗證一下:
以下為引用的內容: <% Dim oConn,oRs Set oConn = Server.CreateObject("ADODB.Connection") Set ors = Server.CreateObject("ADODB.RecordSet") oConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("db1.mdb") Session("conn") = oConn ors.open "select * from t1",Session("conn"),1,1 Response.write(Session("conn").ConnectionString) ors.close Set ors = Nothing oConn.close Set oConn = Nothing %> |
結果出錯,提示"缺少對象: 'Session(...)'"!這說明對象并沒有復制成功,那Session("conn")是什么類型的呢?我們用TypeName(Session("conn"))來測試下,結果為"String"!出于好奇,我們直接輸出Session("conn")看看:
以下為引用的內容: <% Dim oConn,oRs Set oConn = Server.CreateObject("ADODB.Connection") Set ors = Server.CreateObject("ADODB.RecordSet") oConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("db1.mdb") Session("conn") = oConn ors.open "select * from t1",Session("conn"),1,1 Response.write(Session("conn")) ors.close Set ors = Nothing oConn.close Set oConn = Nothing %> |
結果為:
以下為引用的內容: Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=E:/www/db1.mdb;Mode=Share Deny None; Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=""; Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False; Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False; Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False |
這不是Connection對象的ConnectionString屬性值嗎?Connection對象默認的屬性為ConnectionString,執行Session("conn") = oConn時只是將Connection對象默認屬性的值賦給Session("conn")。那為什么用在oRs.open "select * from t1",Session("conn"),1,1也能成功呢?查找資料得出RecordSet對象open方法的第二個參數可以為Connection對象,也可以是數據庫連接信息的字符串!Ok了,那在上邊例子中的oConn對象完全是多余的,直接用下邊代碼即可:
以下為引用的內容: <% Dim ors Set ors = Server.CreateObject("ADODB.RecordSet") Session("conn") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("db1.mdb") ors.open "select * from t1",Session("conn"),1,1 Response.write(oRs(0)) ors.close Set ors = Nothing %> |
結果無錯。好了,到現在為止還剩下一個問題沒有解決:怎么才是正確的對象復制方法?還是用Set語句:
以下為引用的內容: <% Dim oConn,oRs Set oConn = Server.CreateObject("ADODB.Connection") Set ors = Server.CreateObject("ADODB.RecordSet") oConn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("db1.mdb") Set Session("conn") = oConn ors.open "select * from t1",Session("conn"),1,1 Response.write(Session("conn").ConnectionString) Response.write("<br/>") Response.write(TypeName(Session("conn"))) ors.close Set ors = Nothing oConn.close Set oConn = Nothing %> |
這次能顯示出ConnectionString屬性的信息了,結果也顯示Session("conn")為Connection對象!
原文:http://www.mzwu.com/article.asp?id=1105
分享:Windows 2003 安裝設置iis安裝篇2003默認安裝不帶IIS的,要安裝,請點擊開始->管理工具->配置您的服務器向導然后一步步的下一步。到了列表選擇項目的時候。從列表中選擇應用服務器(IIS,ASP.NET)
新聞熱點
疑難解答