使用SQLite的JDBC BigDecimal

时间:2012-02-10 13:45:42

标签: sqlite jdbc bigdecimal

我正在尝试使用以下代码从包含DECIMAL(13,4)的SQL表中接收一个大十进制:

        userStmt = userConn.createStatement();
        userRsst = userStmt.executeQuery("SELECT * FROM WITHDRAWALS WHERE     date BETWEEN " 
                + "'" + limits[0] + "' " + "AND " + "'" + limits[1] + "'");
        try{
            while(userRsst.next()){
            if(Double.parseDouble(userRsst.getString("amount")) != 0){
            temp = userRsst.getBigDecimal("amount");
            }else{
                temp = new BigDecimal("0.0");
            }

                }

        }catch (Exception e) {
            e.printStackTrace();
            return(null);
    }
        finally{
            this.userDisconnect();
        }
    }catch (SQLException e) {
        System.out.println("Could not retrieve withdrawal data 2");
        return null;
    }   
    return wdb;
}

但是我收到以下错误:

java.sql.SQLException: not implemented by SQLite JDBC driver
at org.sqlite.Unused.unused(Unused.java:29)
at org.sqlite.Unused.getBigDecimal(Unused.java:88)
at dat.handle.DBconnection.getWithdrawals(DBconnection.java:233)
at GUI.MainWindow.updateWithdrawalTree(MainWindow.java:372)
at GUI.MainWindow.open(MainWindow.java:217)

有谁可以指出我做错了什么?

谢谢

纳斯

3 个答案:

答案 0 :(得分:0)

我认为我暂时找到了一个解决方法,使用get string并重新编写这样的变量:

temp = new BigDecimal(userRsst.getString("amount"));

仍然很高兴理解为什么“getBigDecimal”函数会抛出SQLException。

答案 1 :(得分:0)

尝试使用David Crawshaw提供的SQLite JDBC驱动程序的分支

https://github.com/gwenn/sqlitejdbc

添加:

  • 为BigDecimal,BinaryStream,CharacterStream,AsciiStream添加基本支持。
  • 将日期和时间存储为朱利安日数。
  • 引入缓存以更快地生成ResultSet#findColumn(String)。

此致 佩德罗索萨

答案 2 :(得分:0)

setBigDecimal()也不适用于我。替换为String,它将起作用。