2015-09-06 94 views
-2

在java中,假設我有一個程序檢查數據庫中的最大值並將其增加1以創建我的收據編號。增加收據編號的值

我怎麼能開始我的第一個數字爲001,並相應地增加它。

因此

int x = rs.get(sql statement for maximum value). 

x = 001

新號碼將被插回應該是002

回答

2

首先,你的變量x爲int,所以它不可能是001,只是1,但你可以使用一個字符串在其他地方使用格式:

String formattedX = String.format("%03d", x); 

我想,「檢查數據庫中的最大值」意味着獲得主鍵的下一個值。要做到這一點,你可以使用數據庫序列(read about it here,它是數據庫特定的,所以我不能說如何在你的情況下實現它),每次你需要它時,獲得它的下一個值。對於OracleDB的它可以用這個查詢來完成:

SELECT somesequense.nextval FROM DUAL; 

或者你可以使用一個分析MAX()函數爲你的數據庫,例如用於Oracle:

SELECT MAX(receipt_number) "Maximum" FROM receipts; 

然後就是增加它在你的java碼。但這不是一個好的解決方案,因爲它會導致一些問題,當你在幾次交易中獲得相同的價值時。

+0

謝謝。使用發現的序列iv是一個非常好的解決方案。上帝保佑 –