我有一个使用HSQLDB的JAVA应用程序。有一个称为“标记”的表,其中包含一列称为“标记”的整数。如果我使用HSQLDB DatabaseManager运行以下查询:SELECT AVG(CAST(标记为FLOAT)),SUM(标记)FROM标记WHERE sid = 5 AND suid = 8
DBM返回正确的值:
1.5和3;用于标记1和2。
如果我使用以下JAVA代码通过相同的查询读出此数据,则Java始终会打印出2。表示平均值和总和。我不知道我在做什么错..也许您可以帮助我。
double avg = 0;
PreparedStatement stmt = dbcn.prepareStatement("SELECT AVG(CAST(mark as FLOAT)), SUM(mark) FROM marks WHERE sid=? AND suid=?");
stmt.setInt(1, 5);
stmt.setInt(2, 8);
ResultSet gARS = stmt.executeQuery();
while(gARS.next()){
avg = gARS.getDouble(1);
System.out.println(gARS.getInt(2));
}
return avg;
最佳答案
System.out应该首先打印SUM:3
。
然后,该方法返回avg 1.5
。似乎avg被四舍五入打印。
也许你有这样的事情:
double avg = callToDB(...);
System.out.printf("%10.0f", avg); // ERROR .0 should be at least .1
因此,请检查格式字符串。如果将其四舍五入,则可能是整数转换。
关于java - 准备好的语句返回错误的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21289248/