Recordset裡的記錄數

2021-04-07 07:06:00 字數 1716 閱讀 1839

在asp應用程式裡,一旦你執行了乙個資料庫查詢,接下來常需要判斷查詢結果的記錄集是否為空集. 如果recordset是空的,你會顯示一條訊息通知使用者,查詢沒有結果,如果recordset不為空,你會將查詢的結果顯示給使用者. 有許多種辦法能判斷乙個

recordset是否為空. 讓我們看看asp郵件列表裡的一篇貼子.

當查詢沒有得到符合查詢條件的結果時,我想顯示一條訊息通知使用者,用什麼甚麼**可以得知recordset為空呢? 比方乙個使用者提交了查詢的條件,資料庫中沒有符合條件的記錄,現在我的**只能顯示一行空行,我該如何得知recordset為空,然後顯示"沒有符合條件的查詢結果."呢?

有人給出了這個問題的答案,答案是正確的,但沒有說得很明白:

與游標型別(cursor type)有關的做法,你可以這麼辦:

if rst.recordcount = 0 then

'no records found

...do something...

end if

或者用與游標型別無關的**:

if rst.bof _ and rst.eof then

'bof & eof indicates an empty recordset

...do something...

end if

沒有經驗的ado/asp程式設計師可能無法正確理解上面涉及的概念,大部分的asp/ado程式設計新手用如下的**來開啟乙個recordset:

dim rs, conn

set conn = server.createobject("adodb.connection")

conn.open ... connection string ...

set rs = conn.execute("select * from authors")

這些**完全符合語法規範,**中隱式地建立了recordset物件的乙個例項,並將其賦於物件變數rs. 但新手往往沒有意識到,如果是隱式地建立了recordset物件,那麼預設的游標型別是forward-only. 絕大部分時候這種游標型別是正確的. 然而,如果你想使用recordcount屬性,你的recordset應該允許反向地讀取行(backwards row fetching).

為了解釋明白我剛才所堆砌的一大堆術語,讓我們來看乙個簡單的例子. 假設乙個程式設計師用上述的**來建立recordset,然後企圖用下面的**來顯示記錄的條數:

response.write rs.recordcount

你將得到-1的結果. 你可能會想,recordset裡的記錄條數是0,可在這種情況下為甚麼會返回-1的結果呢? -1表示ado無法決定你的recordset裡的實際記錄條數. 因為

recordcount屬性統計某個recordset中的記錄條數的辦法是逐條遍歷整個

recordset,然後將游標至回當前值. 所以如果你的游標型別沒有顯式地宣告為靜態或是動態的話,這個屬性無法將游標至回當前值,也就無法返回正確的統計數字.

大部分你可能利用.eof屬性來得知記錄集是否為空,就是上面提到的與游標型別無關的解決辦法. 你得記住, 如果想得到你的recordset中的記錄條數的正確值,你得用允許反向地讀取行的游標,或者耍點兒小聰明,就象下面這些**那樣:

dim rscount

set rscount = conn.execute("select count(*) from pubs")

response.write rscount(0)

日常記錄 JS裡的物件

1.js中不同型別資料的儲存有何不同?js引擎將計算機分配給它的那部分記憶體分為 區和資料區,區存放使用者寫的 資料區儲存資料。2.幾個經典理解儲存過程的題目 1.var a 1 var b a var b 2 現在a為?a 1 2.var a var b a b 現在a.name為?a.name ...

如何刪除msconfig裡啟動的記錄

如何刪除msconfig裡啟動的記錄 啟動選項裡面有很多刪掉的軟體,或者我們已經不讓他自己開機啟動的選項,但是從msconfig編輯裡面還是能夠找到他們的身影,看著很討厭。那麼如何清除他們呢?用了超級兔子之類的軟體也搞不定,只好跑進登錄檔裡終於找到了他們的影子!其實也很簡單的!方法 開啟 開始 選單...

script 終端裡的記錄器

當 你在終端或者控制台工作時,你可能想要記錄在終端中所做的一切。這些記錄可以用來當作史料,儲存終端所發生的一切。比如說,你和一些linux管理員們同 時管理著相同的機器,或者你讓某人遠端登陸到了你的伺服器上,你可能記錄想要終端裡發生的一切。要實現這個目標,你可以使用script命令。scirpt就是...