java - 准备好的语句返回错误值

标签 java sql hsqldb

我有一个使用 HSQLDB 的 JAVA 应用程序。有一个名为“marks”的表,其中包含一列名为“mark”的整数。如果我使用 HSQLDB DatabaseManager 运行以下查询: SELECT AVG(CAST(mark as FLOAT)), SUM(mark) 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。 然后该方法返回平均值,1.5。看来 avg 是四舍五入打印的。

也许你有类似的东西:

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

因此请检查格式字符串。如果向下舍入,则可能是 int 类型转换。

关于java - 准备好的语句返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289248/

相关文章:

mysql - 需要对 MySQL 排名查询的一些解释

java - 删除存储的数据后如何清除 *.lobs 文件?

hsqldb - 如何在 HSQLDB 和 C# .net 之间形成连接?

java - 如何在spring mvc中使用java导入xls和xlsx文件

sql - 将sql参数更改为十进制日期

java - 如何让 JTextArea 完全填满 JPanel?

mysql - 在一次查询中获取同一张表中每个用户的推荐计数

java - 将 Oracle 复制到 HsqlDB(并了解更改是什么)

java - 如何激活 dbcp BasicDataSource 1.4 API 的空闲对象逐出器

java - 每次按键时更新 TextView