【问题标题】:Statement return wrong values语句返回错误值
【发布时间】:2015-04-13 13:36:36
【问题描述】:

我有一个使用HSQLDB 的JAVA 应用程序。有一个名为'tblUser' 的表,其中包含一个名为bigint 的列'tongHH'。如果我使用 HSQLDB DatabaseManager 运行以下查询:

select sum(tongHH) from tblUser. 

DBM 返回正确的值 如果我使用以下 JAVA 代码通过相同的查询读出此数据,java 总是打印错误的值。我得到了 65,我预计是 3905

public int getParentID(String query) {
    int a = 0;
    Connection conn = null;
    ResultSet rs = null;
    try {
       conn = MyConection.getConnection();
       Statement st = conn.createStatement();
       rs = st.executeQuery(query);
while(rs.next()){
    a=rs.getByte(1);
}
} catch (Exception e) {
    e.printStackTrace();
    }finally{
        try {         
            MyConection.closeConnection(conn, null, rs);
        } catch (Exception e) {
        }
    }
return a;
}

【问题讨论】:

  • 您期望什么价值?你得到什么不正确的价值?
  • 你想返回一个int,但是当你从记录集中读取值时,你使用的是getByte(1),应该是getInt
  • 在 DB 中我得到 3905 在 java 返回 65
  • 谢谢!!它运行。我只是一个初学者@RusselYang
  • @TrungXốp 请编辑您的问题以包括您获得的价值和您期望的价值。

标签: java sql hsqldb


【解决方案1】:

您正在尝试从ResultSet 检索的byte 溢出。

3905 作为int 的值是:

00000000 00000000 00001111 01000001

byte 形式获取值仅保留最后 8 位,或

01000001

这是65

请致电the getInt method

【讨论】:

  • 谢谢你。我明白了。我只是初学者。但它总是返回正确的值,直到我使用 sum()
【解决方案2】:

你想返回一个int,但是当你从记录集中读取值时,你使用的是getByte(1),应该是getInt(1)

【讨论】:

    猜你喜欢
    • 2018-11-17
    • 2012-07-27
    • 1970-01-01
    • 2013-10-06
    • 2017-07-20
    • 1970-01-01
    • 2013-11-26
    • 2013-04-27
    • 2011-11-01
    相关资源
    最近更新 更多