Prepared Statement返回错误的值

时间:2014-01-22 17:01:41

标签: java sql hsqldb

我有一个使用HSQLDB的JAVA应用程序。有一个名为'marks'的表,其中包含一个名为'mark'的整数列。如果我使用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;

1 个答案:

答案 0 :(得分:1)

System.out应首先打印SUM:3。 然后该方法返回avg,1.5。似乎avg被打印出来。

也许你有类似的东西:

double avg = callToDB(...);
System.out.printf("%10.0f", avg); // ERROR .0 should be at least .1

请检查格式字符串。如果它向下舍入,则可能是一个int cast。