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

Jef*_*ave 9 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();
Run Code Online (Sandbox Code Playgroud)

Jef*_*ave 29

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

更改:

try(ResultSet rs = stmt.executeQuery(sql)){
Run Code Online (Sandbox Code Playgroud)

至:

try(ResultSet rs = stmt.executeQuery()){
Run Code Online (Sandbox Code Playgroud)

这超越了preparedStatement.

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