java.sql.SQLTransactionRollbackException: по крайней мере один параметр для текущего оператора неинициализирован - PullRequest
2 голосов
/ 15 апреля 2019

Я пытаюсь получить СУММУ целочисленных значений из базы данных (в моем проекте под названием «vsota») и отображаю ее в виде JLabel (в моем проекте под названием «vpd»).И предоставленный код не работает.Вот исключение:

Ошибка: java.sql.SQLTransactionRollbackException: по крайней мере один параметр для текущего оператора не инициализирован.

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);
}

1 Ответ

1 голос
/ 15 апреля 2019

Ошибка: java.sql.SQLTransactionRollbackException: по крайней мере один параметр для текущего оператора неинициализирован.

Ваш 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){}
}
...