简单查询:未由SQLite JDBC驱动程序实现

时间:2013-12-21 21:24:34

标签: java sql sqlite jdbc

首次尝试使用SQLite + Java时,我尝试执行简单的简单查询时收到错误。

错误:SQLite JDBC驱动程序未实现

查询:

String sql = 
    "select Asset, Qty*Price+Fees as Cost \n" +
    "from   Transactions t \n" +
    "       inner join TransactionItems i on t.Id = i.TransactionId \n" +
    "where  TransDate <= ? \n";

try (PreparedStatement stmt = cnn.prepareStatement(sql)) {
    java.sql.Date dte = new java.sql.Date(SumDate().getTimeInMillis());
    stmt.setDate(1, dte);

    try(ResultSet rs = stmt.executeQuery(sql)) {
        while(rs.next()) {
            PortfolioSummaryItem item = new PortfolioSummaryItem(PortfolioSummary.this);
            item.Load(rs);
            items.put(item.asset,item);
        }
        rs.close();
    }

    stmt.close();

2 个答案:

答案 0 :(得分:26)

这是一个简单的剪切/粘贴样式错误。使用预准备语句时,不应将SQL传递到executeQuery

变化:

try(ResultSet rs = stmt.executeQuery(sql)){

要:

try(ResultSet rs = stmt.executeQuery()){

这超越了preparedStatement

抱怨的是用'?'执行查询因为它不是准备好的查询。

答案 1 :(得分:0)

检查libs文件夹中的jdbc驱动程序。 看起来它没有实现你调用的方法。

尝试从此处下载驱动程序: https://bitbucket.org/xerial/sqlite-jdbc/downloads