Netbeans 连接到 SQLite 时出现 SQLite 错误或缺少数据库(没有这样的表)

Posted

技术标签:

【中文标题】Netbeans 连接到 SQLite 时出现 SQLite 错误或缺少数据库(没有这样的表)【英文标题】:SQLite error or missing database (no such table) in Netbeans connection to SQLite 【发布时间】:2018-05-19 09:41:37 【问题描述】:

尝试从 Netbeans 中的 Java 向 SQLite 文件执行插入(或选择)时,出现上述错误。我已经从 SQLite 数据库浏览器手动创建了 db 文件并将其放入源包中。下面是代码和日志:

public void DBInsertServerConfig(ServerConfig serverconfig) throws SQLException 
  Connection conn = DBConnect();
  Statement statement = null;
  conn.setAutoCommit(false);
  statement = conn.createStatement();
  String sql = "INSERT INTO serverconfig(ip,port,db_name,db_user,password,fcm_server_key) " +
                    "VALUES (?,?,?,?,?,?)"; //
  try
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setString(1,serverconfig.getIp());
        pstm.setString(2,serverconfig.getPort());
        pstm.setString(3,serverconfig.getDb_name());
        pstm.setString(4,serverconfig.getDb_user());
        pstm.setString(5,serverconfig.getPassword());
        pstm.setString(6,serverconfig.getFcm_server_key());
        //statement.execute(sql);
        pstm.executeUpdate();
        statement.close();
        conn.commit(); 
        conn.close(); 

数据库已正确打开,但似乎没有找到该表,尽管它存在。

compile:run:
Opened database successfully
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such table: serverconfig)
BUILD SUCCESSFUL (total time: 9 seconds)

附件是来自 SQLite 数据库浏览器的 db 文件的屏幕截图:

我已经看到并尝试过其他帖子,例如 here,但我没有得到解决方案。

谁能帮我解决这个问题?

【问题讨论】:

您的 SQL 语句指示 6 个表字段,但您尝试提供 7 个参数 (?)。删除 PreparedStatement 参数之一 (?) 及其相关逗号。 是的,我看到了,打错了。但这不是问题。谢谢 您确定在复制数据库之前进行了文件/写入更改吗? @MikeT ,是的,我做到了。谢谢 【参考方案1】:

我找到了答案,如果有人遇到同样的问题/困惑,我会发布。 当 url 路径指向项目根文件夹(在 src 之外)时,我已将我的 db 文件放在 src 包下。 netbeans 创建了一个空的 db 文件,当然它里面没有任何表。当您遵循未经其创建者测试的教程时,就会发生这种情况。 :D

【讨论】:

【参考方案2】:

我用的例子是

Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Tolga\\Documents\\NetBeansProjects\\dpmlzmtkb\\depom.sqlite");

这是错的。

我将 depom.SQLite 更改为 depom.db 并且它起作用了。据我了解,如果路径正确,NetBeans 会为给定路径创建另一个空 SQLite 数据库。

【讨论】:

【参考方案3】:

请使用绝对路径,比如(在我的 Ubuntu 上)private static String url ="jdbc:sqlite:/home/yourname/study/eclipse/hk/ss.db";

起初我遇到和你一样的错误, 我可以在普通类中链接sql,但在servlet/jsp中不能

【讨论】:

以上是关于Netbeans 连接到 SQLite 时出现 SQLite 错误或缺少数据库(没有这样的表)的主要内容,如果未能解决你的问题,请参考以下文章

Qt 如何连接到 android OS 中现有的 SQLite 文件?

连接到 AWS DocumentDB 时出现连接错误

连接到 cloudera impala 环境时出现 Kerberos 错误

连接到 HTTPS 站点时出现 SSLHandshakeException

尝试连接到数据库时出现奇怪的错误

连接到大学服务器时出现 JDBC 连接问题