我在從我的Java servlet中的MySQL數據庫檢索數據時遇到了一些問題。作爲參考,我的網站應用程序的結構類似於圖書館 - 您可以檢出項目並將其重新檢入。(JAVA/SQL)ResultSet只從MySQL檢索一行,當它應該檢索更多
當您第一次單擊「檢出」時,您的請求會發送給管理員,讓我們給該人員打電話圖書管理員,他必須批准或不批准你的請求。比方說,我登錄,挑選一些項目,並點擊「結帳」。這裏是發生了什麼:
- 的項目將加入到我的「購物車」
- 在數據庫中的項目的主列表,每個項目都有一個
VARCHAR
稱爲STATUS
,其中確定該項目是否爲"In Stock"
。對於我選擇的每個項目,該變量將被更改爲與我的用戶帳戶關聯的唯一標識符。 - 我的請求被添加到表名爲
requests_list
審批,一般辦理登機手續,等等,做工精細。什麼不能很好地點擊「拒登」。以下是應該發生的事情:
- 的請求被從
requests_list
- 請求者的物品被截斷
- 項目本身獲得申報
"In Stock"
這裏就是一直在發生的事情「購物車」中刪除:
- 該請求被從中刪除210
- 請求者的「購物車」項目被截斷
- 只有在車中的第一個項目獲取
這裏籤回是我與迄今使用的代碼:
stmt.execute("DELETE FROM requests_list WHERE UNIQUE_ID = '"
+ selected_ID + "'"); // this seems to work
stmt.execute("TRUNCATE TABLE checkout_" + selected_ID); // also seems to work
ResultSet all_gear = stmt
.executeQuery("SELECT * FROM gear_master_list");
while (all_gear.next()) {
if (all_gear.getString(5).equals(selected_ID)) {
stmt.execute("UPDATE gear_master_list SET STATUS = 'In Stock' WHERE ID_NUM = "
+ all_gear.getInt(6));
}
}
all_gear.close();
的一些注意事項,解釋變量的幾個:
selected_ID
- 圖書管理員點擊下拉菜單訪問已提出請求的用戶列表。在他或她選擇一個後,該用戶的唯一標識符將變爲selected_ID
checkout_selected_ID
- 您的「購物車」是數據庫中的表格。此表是你的唯一的ID命名的,所以如果我的唯一的ID是兔子,我的表是checkout_bunnies
stmt
並提請Connection
其Statement
從都是有效和工作gear_master_list
是所有的裝備表,all_gear.getInt(6)
引用每一件裝備具有獨特的庫存數量,以及all_gear.getString(5)
是STATUS
可變我提到
我曾嘗試不同的這樣做,這樣的代碼,通過在車中的所有項目運行,更新狀態,然後截斷表。那也不管用 - 對於更新狀態仍然很挑剔,並且表格不會被截斷。
TL; DR:我ResultSet
只讓我從我的表中的一行(我認爲),即使我用while
循環,並有超過一排。這是怎麼回事?有沒有更好,更有效的方法來做到這一點?
有你調試的是您的結果集中了所有的項目,也分享你的錯誤跟蹤.. – SSH