小心資料集亂套

來源:互聯網
上載者:User
資料 最近幫學校做一個東西,大概兩天就弄出來一個,而且今天也上繳了,但是總是覺得有一些擔心。突然想測試測試,本來是想測試一下用二分法對資料進行選取的,但是,不知道怎麼能得到Last Record And First Record,所以,就想慢慢測試測試,怎麼能得到Last And First Record,但是實際中的測試嚇一大跳。asp資料集的有可能亂套。

以前,寫asp讀取資料時,總是用“select * from table”直接選取資料,然後用

If Not Rs.Eof Then

Rs.MoveLast

Do While Not Rs.Bof Then

Response.Write Rs(“ID“)

.....

Loop

End If

簡單的說就是用一個迴圈直接讀取資料庫所有資料,但是如果資料有幾萬條的話,速度是可想而知的了,所以想用二分法對資料進行選擇顯示,但是不知道怎麼能得到開始和最後的資料,又想到了Rs.Bof Rs.Eof 本來是想怎麼能得到欄位ID的最大值,最小值,然後好比較的,但是實際操作中發現,如果你用下面的東西,不一定得到最大值和最小值:

If Not Rs.BOf Then
Rs.MoveFirst
frsID=Rs("ID")
End If
If Not Rs.Eof Then
Rs.MoveLast
lstID=Rs("ID")
End If
Do While Not Rs.Bof
response.Write "ID is "&rs("ID")&"
"
rs.Moveprevious
Loop

response.Write "First ID="&frsID&"
"
Response.Write "Last ID="&lstID&"
"


顯示的frsID=6,lstID=15,可是在顯示的全體資料中有一條資料的ID為16,也就是說最大的ID!=lstID(以前我總是認為這個是想等),最後檢查發現是sql語句有問題,改成“Select * from Login Order By ID Asc”時,顯示:

ID is 16
ID is 15
ID is 14
ID is 13
ID is 12
ID is 11
ID is 10
ID is 8
ID is 7
ID is 6
First ID=6
Last ID=16
將sql換成Select * from Login Order By ID Desc”時,卻是:

ID is 6
ID is 7
ID is 8
ID is 10
ID is 11
ID is 12
ID is 13
ID is 14
ID is 15
ID is 16
First ID=16
Last ID=6

這樣兩個資料的排列完全和sql中要求的不一樣(本來是Asc的再顯示的時候是Desc,向Desc的現實的確實Asc的),而且顯示出來的東西和Login表中資料也完全不一樣。

結論:資料的排列完全是靠Sql和RecordSet雙方控制的。在你沒有對指標記錄操作時,指標記錄是亂得,最好對資料操作時,先整理一下資料的排列,讓它能夠按序排列,方便以後操作。





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。