在 Netbeans 中创建自动生成的 ID 时,值始终设置为 0 而不是 1
Value Always Set to 0 instead of 1 When Creating Auto-Generated ID in Netbeans
我正在尝试使用字符、日期和值的组合来创建唯一的自动生成 ID。这是我的代码:
int getValue;
public void generateNOS(String query) throws SQLException {
try {
Connection con = koneksi.koneksiDB();
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(query);
if (rs.next()) {
getValue = Integer.parseInt(rs.getString(5));
}
} catch (Exception e) {
}
}
public void autonumberNOS() throws SQLException {
generateNOS("SELECT count(no_surat)+1 FROM surat_masuk");
try {
String NOS = "NOS/1/"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"/"+getValue;
txtNOS.setText(NOS);
} catch (Exception e) {
}
}
比如ID应该是"NOS/1/20181120/1"。但是我得到了"NOS/1/20181120/0"。缺少什么? SQL 语法错误吗?感谢您的帮助。
我没有完全遵循您的代码,但我可以指出 JDBC 逻辑的一些问题。这是您现在正在做的事情:
Connection con = koneksi.koneksiDB();
Statement stm = con.createStatement();
String query = "SELECT COUNT(no_surat)+1 FROM surat_masuk";
ResultSet rs = stm.executeQuery(query);
if (rs.next()) {
getValue = Integer.parseInt(rs.getString(5));
}
当您的 select 在结果集中只有一列时,要求第五列是没有意义的。您可能应该关注第一列索引,即
if (rs.next()) {
getValue = rs.getInt(1);
}
另请注意,我在这里使用的是 ResultSet#getInt()
,而不是 ResultSet#getString()
,因为计数通常由数据库级别的整数表示。
请求第一列索引的另一种方法是给计数项一个别名,然后访问它:
String query = "SELECT COUNT(no_surat) + 1 AS cnt FROM surat_masuk";
ResultSet rs = stm.executeQuery(query);
if (rs.next()) {
getValue = rs.getInt("cnt");
}
我正在尝试使用字符、日期和值的组合来创建唯一的自动生成 ID。这是我的代码:
int getValue;
public void generateNOS(String query) throws SQLException {
try {
Connection con = koneksi.koneksiDB();
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(query);
if (rs.next()) {
getValue = Integer.parseInt(rs.getString(5));
}
} catch (Exception e) {
}
}
public void autonumberNOS() throws SQLException {
generateNOS("SELECT count(no_surat)+1 FROM surat_masuk");
try {
String NOS = "NOS/1/"+new SimpleDateFormat("yyyyMMdd").format(new Date())+"/"+getValue;
txtNOS.setText(NOS);
} catch (Exception e) {
}
}
比如ID应该是"NOS/1/20181120/1"。但是我得到了"NOS/1/20181120/0"。缺少什么? SQL 语法错误吗?感谢您的帮助。
我没有完全遵循您的代码,但我可以指出 JDBC 逻辑的一些问题。这是您现在正在做的事情:
Connection con = koneksi.koneksiDB();
Statement stm = con.createStatement();
String query = "SELECT COUNT(no_surat)+1 FROM surat_masuk";
ResultSet rs = stm.executeQuery(query);
if (rs.next()) {
getValue = Integer.parseInt(rs.getString(5));
}
当您的 select 在结果集中只有一列时,要求第五列是没有意义的。您可能应该关注第一列索引,即
if (rs.next()) {
getValue = rs.getInt(1);
}
另请注意,我在这里使用的是 ResultSet#getInt()
,而不是 ResultSet#getString()
,因为计数通常由数据库级别的整数表示。
请求第一列索引的另一种方法是给计数项一个别名,然后访问它:
String query = "SELECT COUNT(no_surat) + 1 AS cnt FROM surat_masuk";
ResultSet rs = stm.executeQuery(query);
if (rs.next()) {
getValue = rs.getInt("cnt");
}