2009年4月28日 星期二

商品到期機制的資料刪除(5/8修改)

原本我的商品到期以後只有設定顯示商品到期,
但是後來加入到期後刪除資料的地方卻發生錯誤,
while(rs.next)
{
int id=rs.getint(article_id);
...
if(設定時間==目前時間)
{
stmt.executeUpdate("delete from time where article_id=id;");
}

}
發生錯誤的地方如上,
如果以這樣方式的話,
在刪除一筆資料時不會錯誤,
但如果有多筆資料的設定時間都一樣時,
刪除第一筆完後就會發生錯誤,
我猜測的原因是因為當刪除時,
rs的指標會因為在刪除第一筆資料後,
檢查下一筆時因為同樣需要刪除,
導致指標可會指向錯誤而發生錯誤.
(後來確定是由於是使用同一個STMT,
所以當我刪除以後就會失去的原本的資料)

而我原本設計成如果到期,
則跳到另一個網頁刪除後再跳回,
想不到同樣會出現錯誤,
而最後我就想直接從rs的地方下手,
上網搜尋了以後發現了rs.deleteRow()函式,
此函是可以直接把目前rs指標指向的資料整筆刪除,
不過一開始要把stmt的rs權限設定為CONCUR_UPDATABLE,
讓它可以去改資料庫的內容,
然後把程式碼改成:
while(rs.next)
{
...
if(設定時間==目前時間)
{
rs.deleteRow()
}

}
這樣就可以直接把到期的商品資料做刪除的動作了.

沒有留言:

張貼留言