2013-12-21 56 views
5

首先在使用SQLite + Java时遇到了问题,当我尝试执行一个简单的查询时,我收到一个错误。简单的查询:没有被SQLite JDBC驱动程序实现

错误: 不是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

那些“'\ n'”是什么? –

+0

请使用通话跟踪(如果可用)发布完整的错误消息。 –

+0

“\ n”主要用于调试(将查询剪切并粘贴到编辑器中)。 –

回答

20

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

变化:

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

要:

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

这是压倒一切的preparedStatement

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

0

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

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

+0

这就是给我错误的驱动程序 –

+0

1 - 你可以仔细检查;路上还有其他罐子吗? 2-您能否在设置驱动程序的地方添加行? –

+0

1-当我在我的IDE中取消链接库时,我得到:'找不到合适的驱动程序。 2.“设置驱动程序”是什么意思? –