Book Id(データを追加すると自動的にインクリメント)などのmysqlデータベースがあります。私はjLabelにインクリメントされた値を取得するためのコードを書いていますが、それもうまくいきますが、もう少し小さな問題があります。私は5冊の本の詳細を入力したと仮定します。だから私は(データベースに詳細を保存するために)保存ボタンを押すと、それは正常に保存され、jLabel
は6としてインクリメントされた値を表示します(それはうまく動作します)。自動インクリメントされたID値をJLabelに取得する方法
問題は、アプリケーションを終了して再起動するたびに、jLabelの値が1と表示されます。次に、別のブックの詳細を保存すると、番号7(これは正しい自動インクリメントID)にスキップされます。しかし、アプリケーションを再起動するとIDが1と表示されるのはなぜですか?私はそれを再起動しても7を読み込む必要があります。ここにコードサンプルがあります。私はクラスのコンストラクターでも呼び出すことができます。しかし、それは更新するようではありません。 :(
private void autoGenerateId() {
if (true) {
try {
ResultSet result = new JDBC().getData("SELECT * FROM newbookstock");
if (!result.next()) {
jLabel5.setText("1");
} else {
ResultSet result2 = new JDBC().getData("SELECT LAST_INSERT_ID() AS bookid FROM newbookstock");
if (result2.next()) {
int id = result2.getInt("bookid") + 1;
String ss = String.valueOf(id);
jLabel5.setText(ss);
} else {
System.out.println("OOOOO");
}
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("Set focus to Jtext1");
}
}
MAX(ID)が動作していないと私は理由を知りません。自動増分IDが0ではなく1から増分しています。 –
ありがとうございました。それは本当に働いた:) –
1つの問題があります。 try { ResultSet result = new JDBC()。getData( "SELECT COUNT(*)FROM author"); if(result.next()){ String id = result.getString( "authorid"); int v = Integer.parseInt(id); int add = v + 1; 文字列追加= String.valueOf(追加); jLabel3.setText(追加); System.out.println(追加); 「著者」テーブルに書き込んだ新しいコードです。しかし、 "Column 'authorid' not found"と表示されます。 –