我是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
)并像这样引用它。