把RS.GetRows看得更清楚
更新時(shí)間:2007年04月19日 00:00:00 作者:
用過Rs.GetRow的兄弟都知道Rs.GetRow可以更有效率地獲取小容量數(shù)據(jù)(不適合大容量數(shù)據(jù),尤其涉及大對(duì)象的時(shí)候,容易暴掉,我就爆過一次),PuterJam應(yīng)用得不錯(cuò)的說。
但是Rs.GetRow返回的是一個(gè)二維數(shù)組,我們經(jīng)常不知道哪段對(duì)哪段。這個(gè)很麻煩,于是編了一小段程序方便調(diào)試用:
Dim ds
Set objRS=objConn.Execute("SELECT * FROM [blog_Upload] WHERE ([ul_Quote] LIKE '%" & CStr(ID) & "%') ")
ds=objRS.GetRows
objRS.Close()
Set objRS=Nothing
' 建立一個(gè)表格
Response.Write "Written By Sipo(www.dc9.cn)<table align=""center"" border=""1"">"
Response.Write vbcrlf
Response.Write "<tr><td></td>"
For j = 0 To UBound(ds, 1)
Response.Write "<td>ds("&j&",X)</td>"
Next
Response.Write "</tr>"
' 每一行
For i = 0 To UBound(ds, 2)
Response.Write "<tr><td>ds(X,"&i&")</td>"& vbcrlf
' 每一列
For j = 0 To UBound(ds, 1)
Response.Write "<td>"
If IsNull(ds(j, i)) Then
Response.Write "Null"
Else
Response.Write ds(j, i)
End If
Response.Write "<br>"
Response.Write "<b>ds("&j&","&i&")</b>"
Response.Write "</td>"
Next
Response.Write "</tr>" & vbcrlf
Next
Response.end
--------------------------------------------------------------------------------
獻(xiàn)給菜鳥們:
關(guān)于GetRows的小資料:
ADO也提供更有效率方法來取得數(shù)據(jù)。GetRows 方法傳回一個(gè)二維的數(shù)組變量,每一行對(duì)應(yīng)Recordset中的一筆記錄,且每一列對(duì)應(yīng)到記錄中的字段。此方法的語法如下:
varArray = rs.GetRows([Rows], [Start], [Fields])
Rows 是要讀取記錄的數(shù)量;如果想要取得Recordset所有記錄,可用-1或省略此參數(shù)。Start 是指出第一個(gè)被讀取記錄的書簽;也可以是下列列舉常數(shù)中的一個(gè):0-adBookmarkCurrent(目前記錄)、1-adBookmarkFirst(第一筆記錄)、或2-adBookmarkLast(最后記錄)。
Fields 是可選擇的字段名稱數(shù)組,其用來限制要讀取的數(shù)據(jù)量。(也可指定單一字段名稱、單一字段索引、或者一個(gè)字段索引數(shù)組)。當(dāng)設(shè)定 Rows 為少于Recordset記錄筆數(shù)時(shí),第一筆未讀取的記錄變成現(xiàn)行記錄。若省略 Rows 參數(shù)或設(shè)定為-1-adGetRowsRest或大于未讀取的筆數(shù)時(shí),GetRows 方法會(huì)讀取所有記錄并讓Recordset在EOF狀態(tài),而不會(huì)產(chǎn)生任何錯(cuò)誤。
當(dāng)處理目的變量數(shù)組的數(shù)據(jù)時(shí),應(yīng)該記得數(shù)據(jù)儲(chǔ)存方式是有點(diǎn)相反的感覺:數(shù)組中第一維定義Recordset的字段(數(shù)據(jù)行),第二維定義Recordset的數(shù)據(jù)列。
GetRows 方法通常比一次讀一筆記錄的循環(huán)要來得快些,但使用這方法時(shí),必須確定Recordset未包含太多記錄;否則,會(huì)很容易以一個(gè)非常大的變量數(shù)組來填滿所有內(nèi)存?;谙嗤脑颍眯⌒牟灰ㄈ魏蜝LOB(Binary Large Object)或CLOB(Character Large Object)字段;若如此做的化,應(yīng)用程序一定會(huì)爆掉,特別是對(duì)于較大的Recordset而言。最后,記住此方法傳回的變量數(shù)組是以0為基底的;傳回記錄的筆數(shù)是UBound(values,2)+1,傳回字段數(shù)是UBound(value, 1)+1。
但是Rs.GetRow返回的是一個(gè)二維數(shù)組,我們經(jīng)常不知道哪段對(duì)哪段。這個(gè)很麻煩,于是編了一小段程序方便調(diào)試用:
Dim ds
Set objRS=objConn.Execute("SELECT * FROM [blog_Upload] WHERE ([ul_Quote] LIKE '%" & CStr(ID) & "%') ")
ds=objRS.GetRows
objRS.Close()
Set objRS=Nothing
' 建立一個(gè)表格
Response.Write "Written By Sipo(www.dc9.cn)<table align=""center"" border=""1"">"
Response.Write vbcrlf
Response.Write "<tr><td></td>"
For j = 0 To UBound(ds, 1)
Response.Write "<td>ds("&j&",X)</td>"
Next
Response.Write "</tr>"
' 每一行
For i = 0 To UBound(ds, 2)
Response.Write "<tr><td>ds(X,"&i&")</td>"& vbcrlf
' 每一列
For j = 0 To UBound(ds, 1)
Response.Write "<td>"
If IsNull(ds(j, i)) Then
Response.Write "Null"
Else
Response.Write ds(j, i)
End If
Response.Write "<br>"
Response.Write "<b>ds("&j&","&i&")</b>"
Response.Write "</td>"
Next
Response.Write "</tr>" & vbcrlf
Next
Response.end
--------------------------------------------------------------------------------
獻(xiàn)給菜鳥們:
關(guān)于GetRows的小資料:
ADO也提供更有效率方法來取得數(shù)據(jù)。GetRows 方法傳回一個(gè)二維的數(shù)組變量,每一行對(duì)應(yīng)Recordset中的一筆記錄,且每一列對(duì)應(yīng)到記錄中的字段。此方法的語法如下:
varArray = rs.GetRows([Rows], [Start], [Fields])
Rows 是要讀取記錄的數(shù)量;如果想要取得Recordset所有記錄,可用-1或省略此參數(shù)。Start 是指出第一個(gè)被讀取記錄的書簽;也可以是下列列舉常數(shù)中的一個(gè):0-adBookmarkCurrent(目前記錄)、1-adBookmarkFirst(第一筆記錄)、或2-adBookmarkLast(最后記錄)。
Fields 是可選擇的字段名稱數(shù)組,其用來限制要讀取的數(shù)據(jù)量。(也可指定單一字段名稱、單一字段索引、或者一個(gè)字段索引數(shù)組)。當(dāng)設(shè)定 Rows 為少于Recordset記錄筆數(shù)時(shí),第一筆未讀取的記錄變成現(xiàn)行記錄。若省略 Rows 參數(shù)或設(shè)定為-1-adGetRowsRest或大于未讀取的筆數(shù)時(shí),GetRows 方法會(huì)讀取所有記錄并讓Recordset在EOF狀態(tài),而不會(huì)產(chǎn)生任何錯(cuò)誤。
當(dāng)處理目的變量數(shù)組的數(shù)據(jù)時(shí),應(yīng)該記得數(shù)據(jù)儲(chǔ)存方式是有點(diǎn)相反的感覺:數(shù)組中第一維定義Recordset的字段(數(shù)據(jù)行),第二維定義Recordset的數(shù)據(jù)列。
GetRows 方法通常比一次讀一筆記錄的循環(huán)要來得快些,但使用這方法時(shí),必須確定Recordset未包含太多記錄;否則,會(huì)很容易以一個(gè)非常大的變量數(shù)組來填滿所有內(nèi)存?;谙嗤脑颍眯⌒牟灰ㄈ魏蜝LOB(Binary Large Object)或CLOB(Character Large Object)字段;若如此做的化,應(yīng)用程序一定會(huì)爆掉,特別是對(duì)于較大的Recordset而言。最后,記住此方法傳回的變量數(shù)組是以0為基底的;傳回記錄的筆數(shù)是UBound(values,2)+1,傳回字段數(shù)是UBound(value, 1)+1。
相關(guān)文章
asp 性能測(cè)試報(bào)告 學(xué)習(xí)asp朋友需要了解的東西
看了下面的文章,發(fā)現(xiàn)作者的測(cè)試真的對(duì)用asp的朋友很有幫助,不只是asp其它的語言應(yīng)該也類似。2009-12-12ASP 獲取文件擴(kuò)展名函數(shù)getFileExt()
利用了asp的instrrev獲取最后.的位置,然后進(jìn)行截取,大家可以自己測(cè)試,其實(shí)編程過程也是大量的測(cè)試,慢慢就會(huì)發(fā)現(xiàn)更多的好東西。2009-08-08ASP利用Google實(shí)現(xiàn)在線翻譯功能
ASP利用Google實(shí)現(xiàn)在線翻譯功能...2006-09-09ASP下使用Access數(shù)據(jù)庫需要注意的18條安全法則
ASP下使用Access數(shù)據(jù)庫需要注意的18條安全法則,注意了下面地方,基本上您的access數(shù)據(jù)庫就不容易被別人盜取了。2011-02-02P3P 和 跨域 (cross-domain) cookie 訪問(讀取和設(shè)置)
在IE 里面跨域去設(shè)置 cookie跨域的實(shí)現(xiàn),嘗試了n中方法都不行,查了一下資料,可以通過設(shè)置header中的p3p值來實(shí)現(xiàn),真不錯(cuò):)2009-06-06ASP網(wǎng)頁模板的應(yīng)用: 讓程序和界面分離,讓ASP腳本更清晰,更換界面更容易
ASP網(wǎng)頁模板的應(yīng)用: 讓程序和界面分離,讓ASP腳本更清晰,更換界面更容易...2007-01-01asp base64 utf-8為了兼容asp.net的base64
asp base64 utf-8為了兼容asp.net的base642009-07-07