JDBC BigDecimal с SQLite - PullRequest
       7

JDBC BigDecimal с SQLite

0 голосов
/ 10 февраля 2012

Я пытаюсь получить большое десятичное число из таблицы SQL, содержащей DECIMAL (13,4), используя следующий код:

        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 голосов
/ 19 июля 2012

Попробуйте использовать форк JDBC-драйвера для SQLite, предоставленного Дэвидом Крошау

https://github.com/gwenn/sqlitejdbc

Добавляет:

  • Добавляет базовую поддержку BigDecimal,BinaryStream, CharacterStream, AsciiStream.
  • Сохраняет даты и время как номер дня в юлианском стиле.
  • Вводит кэш для ускорения ResultSet # findColumn (String).

С уважениемПедро Соуза

0 голосов
/ 14 июля 2014

setBigDecimal () также не работал для меня. Заменено на String, оно будет работать.

0 голосов
/ 14 февраля 2012

Я думаю, что пока нашел способ обойтись, используя get string и переделав переменную следующим образом:

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

Тем не менее, было бы неплохо понять, почему функция getBigDecimal выдает исключение SQLException.

...