我有一个包含一些数据的现有数据库(类似字典),我想把它放在安装apk-package中,我会解释 - 我只是想在安装应用程序时使用我现有的数据库。哪种方法最好?
将数据库放入res / raw /,然后在首次启动应用时将其复制到SD卡上。
创建一个SQL脚本,该脚本将创建数据库结构并填充数据并在db-helper类中执行。我认为这是一个非常糟糕的主意,因为我从所有表中获得了大约100万条记录,并且很难使用该脚本。
使用静态不可写数据库,例如post
还有别的吗?
答案 0 :(得分:2)
我建议您使用SQLiteAssetHelper
库(https://github.com/jgilfelt/android-sqlite-asset-helper)。它是一个Android助手类,可以使用应用程序的原始资产文件管理数据库创建和版本管理。
此类为开发人员提供了一种简单的方法,可以使用现有的SQLite数据库(可能预填充数据)发布他们的Android应用程序,并管理它的初始创建以及后续版本发布所需的任何升级
您预装的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();
}
}
答案 1 :(得分:1)
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
有了这个,您可以将数据存储在您的资产文件夹中,并将其复制到您的apk数据库 问题是文件大小有限制,即10MB,你无法删除数据cos资产文件夹是只读的,所以你将有重复并增加apk大小
https://github.com/jgilfelt/android-sqlite-asset-helper
另一种选择是你直接使用它 祝你好运:)
答案 2 :(得分:0)
@Whizzzkey根据您的要求就是答案:)
将数据库放在assets文件夹中,虽然您可能不会从中执行写操作,为此您必须将db复制到SD卡(这是昂贵的)或内存。
快乐的编码。