android - 无法使用 Sqlite AssetHelper 库打开预安装的数据库

标签 android sqlite

我正在使用预安装的数据库并使用 SqliteAssetHelper图书馆。

这是我的数据库代码

public class DBController extends SQLiteAssetHelper {

    private static final String DATABASE_NAME = "user.db";
    private static final int DATABASE_VERSION = 1;

    private final String TABLE_NAME = "User";

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

    public ArrayList<UserData> getAllUserData() {

        ArrayList<UserData> data_list = new ArrayList<>();

        try {
            // open database to query
            SQLiteDatabase mySqliteDb = getWritableDatabase();

        } catch (Exception e) {

            Log.e("exception", "" + e);
        }

        close();
        return data_list;
    }
}

错误: Assets 中缺少数据库/user.db 文件(或 .zip、.gz 存档),或目标文件夹不可写

当我将我的代码更改为 SQLiteDatabase mySqliteDb = getReadableDatabase(); 我得到 android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 错误。

我搜索了这个问题,大多数人都说检查你的数据库是否存在于数据库文件夹中。

enter image description here

我试过使用 zip 还是不行。我想我错过了什么。

最佳答案

您的 assets/ 目录属于 main/,而不是 app/

关于android - 无法使用 Sqlite AssetHelper 库打开预安装的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36980068/

相关文章:

android - React Native 生产级代码和错误处理

android - 向服务器发送消息的设计建议

android - 如何从另一个 Activity 更改切换按钮状态

c# - 性能不佳的 Sqlite.net 扩展

node.js - 为nodejs安装sqlite3

sqlite - 使用 sqlite 数据库部署经典 ASP Web 应用程序的最佳方式?

android - 从其他应用程序中检索内容的文件名

java - 如何将 hashmap 中的值存储在字符串数组中

android - 异步任务锁数据库

php - 在 PHP 中使用 SQlite3 如何计算结果集中的行数?