【问题标题】:Attach Sqlite Database in Java在 Java 中附加 Sqlite 数据库
【发布时间】:2012-10-19 06:30:54
【问题描述】:

我在附加数据库并将附加数据库中的所有行插入主数据库时遇到问题。

这是我的代码。

public void selectOldDb(String dbName) throws Exception {
    createNewDB();
    Class.forName("org.sqlite.JDBC");

    Connection connOldDb = DriverManager.getConnection("jdbc:sqlite:"+ dbName);
    String newDbName = getDirToNewDb();

    newDbName = newDbName + "auftraege.db";
    Connection connNewDb = DriverManager.getConnection("jdbc:sqlite:"+ newDbName);

    connNewDb.prepareStatement("ATTACH DATABASE \"" + connOldDb + "\" AS  fromDB").execute();

    connNewDb.prepareStatement("INSERT INTO main.auftraege  SELECT * FROM fromDB.SendeDS").execute();

    connNewDb.close();
    connOldDb.close();
}

我尝试插入时出现此错误。

[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的表: fromDB.SendeDS)

我做错了什么?

【问题讨论】:

  • 我看到了两种可能性:1)表不存在,在这种情况下您需要创建它,2)您的数据库或表名中有错字。
  • 感谢您的回答。桌子在那里。我在连接后使用结果集对其进行了测试。但是你的错字是什么意思?
  • 打错字,我的意思是你应该仔细检查SendeDS实际上是你要查询的表的名称。由于我的母语是英语,我看到您可能指的是SendDSSenderDS。当您知道应该是什么时,这些拼写错误很容易被忽略。我只是建议你仔细检查一下。

标签: java sqlite jdbc connection


【解决方案1】:

ATTACH DATABASE 命令需要一个文件名,但你给它一个 Connection 对象的表示形式。

您不需要connOldDb,只需使用dbName

【讨论】:

  • 非常感谢。这很容易,而且效果很好。这是我的新代码: connNewDb.prepareStatement("ATTACH DATABASE '" + dbName + "' AS fromDB").execute();
  • 你甚至需要打开与旧数据库的连接吗?
  • @Tacitus86 引用答案,“你不需要connOldDb”。
猜你喜欢
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 2012-04-15
  • 2013-08-07
相关资源
最近更新 更多