当前位置: 首页 > 知识库问答 >
问题:

Android将现有数据库导入project时出错

轩辕佑运
2023-03-14

Im在尝试将现有的SQL数据库导入到我的项目中时遇到了一些问题。我在src/assets文件夹中找到了.db文件,并按如下方式配置了DBHandler:

public class DatabaseOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "test.db";
private static final int DATABASE_VERSION = 1;

public DatabaseOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

但是,每当我试图从一个表中进行原始查询时,Android不会使用资产文件夹中的数据库,而是创建一个具有相同名称的空的新数据库和一个仅名为android_metadata的表。

如何正确设置?

共有1个答案

谭绍晖
2023-03-14

实际上,您需要将文件从assets文件夹复制到一个可用的位置,通常是data/data/your_packagae/databases/test.db。

正如您所发现的,您提供的代码甚至不会考虑assets文件夹中的文件,因此在第一次尝试打开数据库时(当您第一次访问数据库时,因为在实例化DatabaseOpenHelper对象时没有尝试打开数据库),会出现一个没有表的新的空数据库(除了android_metadata表,它是android SDK作为open的一部分创建的)。

只有当文件不存在于该位置时,才应复制该文件。

您可以通过使用SQLiteAssetHelper简化复制,注意这要求要复制的文件位于assets文件夹的databases目录中(您可能必须创建databases目录)。

或者,您也可以使用自己的复制过程,这个答案是这样做的一个示例(尽管对于演示/解释来说有点臃肿)。

 类似资料:
  • 当我将从开源网站(如Apache,Github)下载的导入时,发生了几个错误:(.注意,所有Maven项目都可以在Eclipse下正确编译和测试。 首先,在将maven项目导入到Eclipse之后,项目图标上将出现,但是项目中没有错误。我发现在文件中存在节点。我删除了节点,然后错误就消失了,我想知道为什么,因为maven项目中没有模块。下面的代码是我之前删除的节点。

  • 本文向大家介绍Android导入现有的数据库方法示例,包括了Android导入现有的数据库方法示例的使用技巧和注意事项,需要的朋友参考一下 前言 大家在平时见到的android数据库操作一般都是在程序开始时创建一个空的数据库,我们然后在进行相关操作。这个我们就比较好做了,因为这个数据库是我们一开始就跟着这个应用走的,那么我们有的时候不可能什么都是自己去做的。我们要是需要使用一个已有数据的数据库怎么

  • 我忙于一项学校作业,我有一个由三个表组成的基本access数据库。Book、Reader和BookRated,其中as BookRated是交集表,主键userName来自Reader和ISBN来自Book组成BookRated的复合主键(作为外键)。 我正试图将信息插入书签表中,但出现以下错误

  • 我一直在本地开发我的网站,现在我正试图将其迁移到一个live。我导出本地sql数据库并尝试将其导入新数据库,但它返回错误: SQL查询: 表wpmedokonta_commentmeta的表结构 创建表wpmedokonta_commentmeta meta_id BIGINT(20)无符号非空自动增量,comment_id BIGINT(20)无符号非空默认值'0',meta_key VARCH

  • 我正在尝试将mysql数据库导入新版本的xampp(v7.1.8)。按下导入按钮后,我收到数百条此错误消息: 请注意.\vendor\phpmyadmin\sql parser\src\UtfString.php#128未初始化字符串偏移量:516 回溯 .\vendor\phpmyadmin\sql parser\src\Lexer.php\823:phpmyadmin\SqlParser\Ut

  • 问题内容: 我想保留所有MySQL数据库的备份。我有100多个MySQL数据库。我想同时导出所有它们,然后一次将所有它们再次导入到我的MySQL服务器中。我怎样才能做到这一点? 问题答案: 出口: 查找有关mysqldump的文档。您可能要使用注释中提到的一些选项: 进口: