【问题标题】:simple query: not implemented by SQLite JDBC driver简单查询:SQLite JDBC 驱动没有实现
【发布时间】:2014-01-10 12:02:14
【问题描述】:

第一次尝试使用 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();

【问题讨论】:

  • 那些“\n”是干什么用的?
  • 请发布带有呼叫跟踪的完整错误消息(如果有)。
  • “\n”主要用于调试(将查询剪切并粘贴到编辑器)。
  • 您的trys 的catch 零件怎么样?你有吗?
  • 它有点像扔掉的应用程序,所以我不会为捕捉错误而烦恼

标签: java sql sqlite jdbc


【解决方案1】:

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

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

【讨论】:

  • 1-你能仔细检查一下吗?路径中是否还有其他罐子? 2-你能添加你设置驱动程序的行吗?
  • 1-当我在 IDE 中取消链接库时,我得到:No suitable driver found。 2、“设置驱动”是什么意思?
  • 试试这个检查驱动:DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData(); System.out.println("驱动名称:" + dm.getDriverName()); System.out.println("驱动版本:" + dm.getDriverVersion());
  • 驱动名称:SQLiteJDBC 驱动版本:原生
【解决方案2】:

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

变化:

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

收件人:

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

这覆盖了preparedStatement

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

【讨论】:

  • 我觉得这个问题应该有你在代码中看到的那些跟踪器之一:每次搜索此错误并找到此注释时递增此计数器(我现在至少为 5)
猜你喜欢
  • 2014-07-30
  • 2016-01-01
  • 2016-08-18
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多