java.sql.SQLTransactionRollbackException : At least one parameter to the current statement is uninitialized 异常

标签 java sql jdbc derby

我正在尝试从数据库(在我名为“vsota”的项目中)获取整数值的总和,并将其显示在 JLabel 中(在我名为“vpd”的项目中)。并且提供的代码不起作用。这是异常(exception):

Error: java.sql.SQLTransactionRollbackException: At least one parameter to the current statement is uninitialized.

try {
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    String sql = "SELECT SUM(vsota) FROM Vse WHERE vsota = ?";
    rs = stmt.executeQuery(sql);

    rs.next();
    int stevilo = rs.getInt("vsota");
    String vsota = Integer.toString(stevilo);

    vpd.setText(vsota);

} catch (SQLException ex) {
    Logger.getLogger(ZačetniObrazec.class.getName()).log(Level.SEVERE, null, ex);
}

最佳答案

Error: java.sql.SQLTransactionRollbackException: At least one parameter to the current statement is uninitialized.

您的 String 使用参数 vsota = ? 因此您需要使用 PreparedStatement 而不是 Statement能够为其定义一个值。

PreparedStatement ps = null;
ResultSet rs = null;

try{
    ps = con.prepareStatement(sql);
    ps.setInt(1, vSotaValue); //parameters are 1-based

    rs = ps.execute();
} finally {
    if(rs != null) try{rs.close();} catch(SQLException e){}
    if(ps != null) try{ps.close();} catch(SQLException e){}
}

关于java.sql.SQLTransactionRollbackException : At least one parameter to the current statement is uninitialized 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55685679/

相关文章:

java - Java 中去掉逗号、空格、排序

php - 从 sql 获取前 12 个月

php - Laravel - 从字符串转换日期和/或时间时转换失败

sql - java.lang.ClassCastException : com. mchange.v2.c3p0.impl.NewProxyConnection 问题

java - Ant:解析 java arg 的通配符

java - 收到错误 - java.lang.NoSuchMethodError :

java - JDBC 连接 : Not Recconecting after Timeout

java - 从java到plsql varchar2(1)的单字符串导致 'character string buffer too small'

java - 如何解决 java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory?

sql - 如何统计客户数?