gpt4 book ai didi

android - 在 apk 中包含现有数据库

转载 作者:太空狗 更新时间:2023-10-29 12:44:02 25 4
gpt4 key购买 nike

我有一个包含一些数据(类似于字典)的现有数据库,我想将其放入安装 apk 包中,我将解释 - 我只想在安装应用程序时使用我现有的数据库。哪种方法最好?

  1. 将数据库放在 res/raw/中,然后在应用首次启动时将其复制到 SD 卡上。

  2. 创建一个 SQL 脚本,该脚本将创建一个数据库结构并填充数据并在 db-helper 类中执行它。我认为这是一个非常糟糕的主意,因为我有来自所有表的大约 100 万条记录,并且很难使用该脚本。

  3. 使用静态不可写数据库,如 post

还有什么吗?

最佳答案

我建议您使用 SQLiteAssetHelper 库 ( https://github.com/jgilfelt/android-sqlite-asset-helper )。它是一个 Android 帮助程序类,用于使用应用程序的原始 Assets 文件来管理数据库创建和版本管理。

此类为开发人员提供了一种简单的方法来将他们的 Android 应用程序与现有的 SQLite 数据库(可能预先填充了数据)一起发布,并管理它的初始创建和后续版本发布所需的任何升级。

您预加载的 SQLite 数据库将存储在 Assets 文件夹中的压缩文件中,SQLiteAssetHelper .jar 库将存储在您的 lib 文件夹中,请确保将其添加到构建路径中。

然后你可以创建一个类如下:

加载歌曲名称及其标题的预加载数据库的示例类:

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class DatabaseManager {
// DECLARATION OF ALL THE VARIABLES AND CONSTANT THAT WILL BE USED TO CREATE THE TABLE

private static final String DATABASE_NAME = "SongDatabase";
private static final String DATABASE_TABLE = "Song";

// DECLARATION OF ALL THE COLUMN REQUIRED TO BE CREATED

public static final String KEY_ROWID = "_id";
public static final String KEY_AUTHOR = "author";
public static final String KEY_TITLE = "title";

private DatabaseHelper mDbHelper;
private SQLiteDatabase ourDatabase;
private final Context ourContext;

public class DatabaseHelper extends SQLiteAssetHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}

public DatabaseManager(Context context){
ourContext = context;
}

// open the database for access
public DatabaseManager open() throws SQLException {
mDbHelper = new DatabaseHelper(ourContext);
ourDatabase = mDbHelper.getWritableDatabase();
return this;
}

// Enter Values into the database or create database values
public long createRecords(String author, String title) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_AUTHOR, author);
initialValues.put(KEY_TITLE, title);
return ourDatabase.insert(DATABASE_TABLE, null, initialValues);
}

// close the database after creating the values for security purposes
public void close() {
mDbHelper.close();
}
}

关于android - 在 apk 中包含现有数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21105309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com