說說對象的復(fù)制_ASP教程
推薦:ASP實例:利用緩存提高數(shù)據(jù)顯示效率實例演示:先建立一個簡單的數(shù)據(jù)庫,寫個function讀取一下,寫入一個dim變量temp中: ASP代碼 以下為引用的內(nèi)容: <% Function DisplayRec
以下為引用的內(nèi)容: <% 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 %> |
這是網(wǎng)上流傳的把Connection對象保存在Seesion對象中的代碼,注意其中的:Session("conn") = oConn,對象的復(fù)制就是這樣子的嗎?下邊我們來驗證一下:
以下為引用的內(nèi)容: <%
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 %> |
結(jié)果出錯,提示"缺少對象: 'Session(...)'"!這說明對象并沒有復(fù)制成功,那Session("conn")是什么類型的呢?我們用TypeName(Session("conn"))來測試下,結(jié)果為"String"!出于好奇,我們直接輸出Session("conn")看看:
以下為引用的內(nèi)容: <% 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 %> |
結(jié)果為:
以下為引用的內(nèi)容: 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對象默認(rèn)的屬性為ConnectionString,執(zhí)行Session("conn") = oConn時只是將Connection對象默認(rèn)屬性的值賦給Session("conn")。那為什么用在oRs.open "select * from t1",Session("conn"),1,1也能成功呢?查找資料得出RecordSet對象open方法的第二個參數(shù)可以為Connection對象,也可以是數(shù)據(jù)庫連接信息的字符串!Ok了,那在上邊例子中的oConn對象完全是多余的,直接用下邊代碼即可:
以下為引用的內(nèi)容: <%
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 %> |
結(jié)果無錯。好了,到現(xiàn)在為止還剩下一個問題沒有解決:怎么才是正確的對象復(fù)制方法?還是用Set語句:
以下為引用的內(nèi)容: <% 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屬性的信息了,結(jié)果也顯示Session("conn")為Connection對象!
原文:http://www.mzwu.com/article.asp?id=1105
分享:Windows 2003 安裝設(shè)置iis安裝篇 2003默認(rèn)安裝不帶IIS的,要安裝,請點擊開始->管理工具->配置您的服務(wù)器向?qū)? 然后一步步的下一步。到了列表選擇項目的時候。 從列表中選擇 應(yīng)用服務(wù)器(IIS,ASP.NET)
- asp FSO 讀寫文件本文件實現(xiàn)代碼
- asp中isNull、isEmpty和空字符串的區(qū)別
- asp獲取用戶真實IP地址的方法
- asp連接sqlserver數(shù)據(jù)庫實現(xiàn)代碼
- asp中正則表達(dá)式過濾html代碼函數(shù)
- asp中g(shù)et post提交表單區(qū)別
- 網(wǎng)頁模板:ASP內(nèi)建對象Request
- xmlhttp的open方法使用詳解
- ASP的常用的自定義函數(shù)大全
- asp中用for循環(huán)的一個小技巧
- eWebEditor v3.8 列目錄
- ASP無組件分頁實現(xiàn)思路及代碼
- 相關(guān)鏈接:
- 教程說明:
ASP教程-說說對象的復(fù)制。