在java中分离sqlite数据库

Posted

技术标签:

【中文标题】在java中分离sqlite数据库【英文标题】:detach sqlite database in java 【发布时间】:2017-07-18 05:59:03 【问题描述】:

我想在附加新的 sqlite 数据库之前分离当前的 sqlite 数据库(旧)。但是当我执行下面的代码时:

Statement statement = connection.createStatement();
statement.execute("DETACH database '" + alias+"'");
statement.close();**

我收到以下错误:

java.sql.SQLException: [SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的数据库:OLD)

我已使用以下代码附加数据库:

SQLiteDataSource dataSource = new SQLiteDataSource();
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
statement.execute("ATTACH DATABASE '" + path + "' AS " + alias);
statement.close();**

谁能帮我看看我哪里做错了?

【问题讨论】:

如果我尝试对 NEW 和 OLD 数据库独立执行任何查询,它们可以正常工作并获得 NEW 和 OLD 所需的所有结果集。但是当我将它们放在相同的代码中并查询它们时(首先附加新的数据库文件,查询它,然后附加旧的,然后查询旧的),我在旧的结果集中得到重复的数据。所以我想在查询 OLD 之前分离 NEW 您是否尝试过在别名周围不加单引号(如文档中所述)? @DawoodibnKareem 是的,我试过了 1.statement.execute("DETACH database '" + alias+"'"); 2.statement.execute("DETACH database " + alias); 3.statement.execute("DETACH '" + alias+"'"); 4.statement.execute("DETACH " + alias); 它们都给出了相同的错误:( @user7294900 你能告诉我如何用 PATH 分离 你使用的是同一个连接对象吗? 【参考方案1】:

通过每次我调用初始化数据库连接的方法时创建新引用来解决问题:)

【讨论】:

以上是关于在java中分离sqlite数据库的主要内容,如果未能解决你的问题,请参考以下文章

ANDROID - 如何从 sqlite 字段中分离 JSONObject 值

SQLite 和 Firebase 数据库之间的同步,当用户离线数据存储在 sqlite 和在线数据存储在 firebase 时

如何通过将地图切片图像保存到 sqlite 数据库来使用 osmdroid 实现离线地图?

使用 react-native-sqlite-storage 反应原生离线应用程序

iOS开发数据库篇—SQLite简单介绍

如何在更新 android 应用程序时用新数据库完全替换旧的 sqlite 数据库?