我有一个使用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/

10-14 08:56