value总是设置为0而不是1

sbtkgmzw  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(352)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

4个月前关门了。
改进这个问题
我尝试使用char、date和value的组合来生成唯一的自动生成的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语法错误吗?谢谢你的帮助。

qyswt5oh

qyswt5oh1#

我并没有完全理解您的代码,但我可以指出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");
}

相关问题