【发布时间】:2017-02-09 11:39:26
【问题描述】:
快速背景 - 我没有真正的编程知识,所以认为完全是初学者!
我使用以下指南从资产文件夹加载数据库,它工作正常 http://www.javahelps.com/2015/04/import-and-use-external-database-in.html.
我现在想稍微调整一下,以便它加载我使用 DB Browser for SQLite 创建的不同 SQLite 数据库,但它会引发以下错误: 资产中缺少数据库/Exercisesthree.db 文件(或 .zip、.gz 存档),或目标文件夹不可写
我已将新数据库 (Excercisesthree.db.zip) 放在与工作数据库相同的资产文件夹中(我也将解压缩的文件留在那里 (Excercisesthree.db)。 我更改了 DatabaseOpenHelper 类以打开 Excercisesthree.db 而不是其他数据库(下面的代码),但由于某种原因它不起作用。我怀疑它与数据库的格式有关,因为我几乎没有更改代码
package com.example.mat.externaldatabasedemo;
/**
* Created by Mat on 24-Jan-17.
*/
// http://www.javahelps.com/2015/04/import-and-use-external-database-in.html
import android.content.Context;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class DatabaseOpenHelper extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "Exercisesthree.db";
private static final int DATABASE_VERSION = 1;
public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
这是数据库文件的链接: https://1drv.ms/u/s!AupGvbDoJdp9i26l9oO5CcCGf2I0
这是数据库文件的位置: C:\Users\Mat\AndroidStudioProjects\ExternalDatabaseDemo\app\src\main\assets\databases
【问题讨论】:
-
我怀疑这是 Db 格式问题,否则在读取文件时您会看到错误。您确定数据库文件在“数据库”文件夹中吗?并检查文件名和扩展名是否正确。
-
感谢您的回复。我已经检查了大约 100 次路径、名称、扩展名等,但看不到任何错误。我将加载一个指向显示资产文件夹的图片的链接
-
感谢您的回复。我已经多次检查路径、拼写错误、扩展名等,但无法发现任何错误。这是显示资产文件夹位置及其内容的图片的链接:1drv.ms/i/s!AupGvbDoJdp9i2_0DJQt0fxza-5E
-
图片中可以看到的“progsdb.db.zip”文件就是要加载的数据库。为了让它加载那个,我只需将“Exercisesthree.db”替换为“progsdb.db”。出于某种原因,我不必包含 .zip 扩展名。我也尝试将代码更改为Exercesthree.db.zip,但这仍然不起作用
-
其实这个库不需要你包含'.zip'文件扩展名。如果您的数据库文件是“Exercisesthree.db.zip”,您的
DATABASE_NAME将是“Exercisesthree.db”。此外,您不必将其作为 zip 包含在内。我想你可以尝试调试库。有一个名为copyDatabaseFromAssets的方法在此处设置断点并按您的方式进行操作。尝试在调试时更改值,看看有什么效果。
标签: android database android-sqlite