【问题标题】:Java resultSet getInt() returns no valueJava resultSet getInt() 不返回值
【发布时间】:2020-02-06 08:39:18
【问题描述】:

这里,resultSet.getInt() 不起作用,但我不知道我的代码有什么问题。

我想增加列的值(名称作为变量“出席”)。使用 SELECT 语句我想读取当前值并使用 UPDATE 我想将相应的值增加 1。但问题是 int a = r.getInt("'" + admission + "'");不起作用。尽管当前值不是 0(例如 1),但它始终返回值 0。我的代码有什么问题?

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

【问题讨论】:

    标签: java sql sqlite swing jtable


    【解决方案1】:

    由于您将列名用单引号括起来,因此它被视为字符串文字 'attendance' 而不是列名,即变量 attendance 的值。
    改为:

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

    (为什么要连接参数nameyear?使用占位符?,就像UPDATE 语句一样)

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

    int a = r.getInt(attendance);
    

    【讨论】:

      【解决方案2】:

      由于您只有 1 列,因此您可以使用 column index,而不是列名

      int a = r.getInt(0);
      

      【讨论】:

      • attendance 是变量...例如如果出席 = present,present 是列名
      猜你喜欢
      • 2014-01-07
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      相关资源
      最近更新 更多