Java resultSet getInt () не возвращает значения - PullRequest
0 голосов
/ 09 октября 2019

Здесь resultSet.getInt () не работает, но я не знаю, что не так с моим кодом.

Я хочу увеличить значение столбца (с именем в качестве переменной 'посещаемость "). Используя инструкцию SELECT, я хочу прочитать текущее значение, а используя UPDATE, я хочу увеличить соответствующее значение на 1. Но проблема в том, что int a = r.getInt ("'" + посещаемость + "'");не работаетОн всегда возвращает значение 0, хотя текущее значение не равно 0 (например, 1). Что не так с моим кодом?

try {
                Class.forName("org.sqlite.JDBC");
                     c = DriverManager.getConnection("jdbc:sqlite:"+ x +".db");
                     s = c.createStatement();
                     r = s.executeQuery("SELECT '" + attendance + "' FROM viewer WHERE name = '" + name + "' AND year = '" + year + "'");
                     while (r.next()){
                         int a = r.getInt("'" + attendance + "'");
                         int b = 1 + a;
                         String sql = "UPDATE viewer SET '" + attendance + "' = ? WHERE name = ? AND year = ? ";
                         p = c.prepareStatement(sql);
                         p.setInt (1,b);
                         p.setString (2,name);
                         p.setInt (3,year);
                         p.executeUpdate();
                     }
                     p.close();
                     c.close();
                     // r.getInt()  value always 0
            }
            catch (ClassNotFoundException | SQLException e) {
                JOptionPane.showMessageDialog(null, e);
            }

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Поскольку имя столбца заключено в одинарные кавычки, оно рассматривается как строковый литерал 'attendance', а не как имя столбца, являющегося значением переменной attendance. Измените на:

"SELECT " + attendance + " FROM viewer WHERE name = '" + name + "' AND year = '" + year + "'"

(почему вы объединяете аргументы name и year? Используйте заполнители ? так же, как оператор UPDATE

"UPDATE viewer SET " + attendance + " = ? WHERE name = ? AND year = ? "

и

int a = r.getInt(attendance);
0 голосов
/ 09 октября 2019

, поскольку у вас есть только 1 столбец, вы можете использовать column index вместо имен столбцов

int a = r.getInt(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...