我手動增加我的ID號碼在我的數據庫,因爲我無法讓它自動工作。這是一個項目,不關心它是否自動工作 - 我可以嘗試並在以後解決。如何從Java代碼創建數據庫ID?
我正在創建一個方法,檢查結果集中最低的空閒ID號。最低值將被設置爲一個名爲availableId的整數,這些用戶在註冊時將被給予。
這是我迄今從閱讀了:
http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html http://wiki.netbeans.org/GetStartedwithJavaDB
作爲一個例子,這是我在我的數據庫ID:
/,2,/,4,5,6,/,8,9
1,3和7因爲這些用戶刪除了他們的帳戶而丟失。我想在填寫任何其他人之前填寫第一個數字,然後下一個用戶將註冊爲第三個數字。
public int getAvailableId() {
int availableId = 1;
try {
String stmt = "select PID from APP.PERSON";
PreparedStatement ps = Main.getPreparedStatement(stmt);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int n = rs.getInt(1);
int n2 = rs.next().getInt(1);
if (!(n == 1)) {
return availableId;
} else if (!(n2-- == n)) {
availableId = n++;
}
}
rs.close();
ps.close();
} catch (Exception e) {
System.out.println(e);
}
return availableId;
}
兩個問題在這裏:
rs.next()
返回一個布爾值,但我想N2舉行下一行的整數值 - 我無法找到,這是否從這裏的方法 - http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html- 我無法弄清楚如何遍歷所有內容以找到最低可能的空閒ID號。
請原諒垃圾代碼!隨着我的進展,我學到了很多東西,我明白這對一兩個代碼來說是不好的做法,代碼並不好。
我該如何去做這件事?
如果」真的要做到這一點,確保使用事務來避免雙重ID(想象兩個程序同時查找下一個ID,然後使用相同的ID)。無論如何,這是非常糟糕的做法,並且在我能想到的所有RDBMS中自動遞增ID很容易,可以更好地解決這個問題(並且可能會問一個關於它的問題),現在和維護您的軟件時可以節省很多麻煩。 – 2013-02-15 15:53:41
此外,請注意,「從APP.PERSON選擇PID」不能保證和訂購。如果必須,請使用:「從APP.PERSON ORDER BY PID中選擇PID」。 大部分情況下,我發現試圖重複使用已刪除的ID是一個壞主意。只要獲得最大值並完成。 – 2013-02-15 15:56:32
感謝您編輯延斯埃拉特,我想不起一個標題,所以寫了,忘了提交之前完成它。感謝您的迴應。 – 2013-02-15 15:57:03