我是Java和JDBC的新手。
我试图通过JDBC从数据库中获取一个双精度值,并使一个全局变量等于该值。这就是我所做的。

public class Console {

    String sql;
    Statement stmt;
    Connection conn;
    ResultSet rs;

    //Category Total
    public static double num;

    public Console(){
            try{
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database?autoReconnect=true&useSSL=false","user","password");
            stmt = conn.createStatement();
            System.out.println("Connected database successfully...");

            sql = "SELECT sum(a) FROM table";
            while(rs.next()) {
                rs = stmt.executeQuery(sql);
                num = rs.getDouble("sum(a)");
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String args[]) {
        System.out.println(num);
    }


}

当我运行程序时,尽管实际值不是,但它会打印0.0。

最佳答案

您需要在while循环之前获取结果集,然后对其进行迭代

rs = stmt.executeQuery(...);
while (rs.next()) {
  // and process your results row by row here...
}


否则(如您所见),您的rs变量未设置

您的结果集将不包含sum(a)作为列名。您可以按位置获取结果(例如getInt()可以采用索引整数),也可以重命名结果列(例如选择sum(a) as sum FROM table)并像这样引用它。

10-02 06:05
查看更多