简单查询:不是由 SQLite JDBC 驱动程序实现的

2022-09-03 17:04:10

首先使用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();

答案 1

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

改变:

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

自:

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

这覆盖了 .preparedStatement

它抱怨的是执行一个带有“?”的查询,因为它不是准备好的查询。


答案 2

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

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


推荐