首次尝试使用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();
答案 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