Database Android预填充数据库
我正在开发一个Android应用程序,在用户使用该应用程序之前,需要在该应用程序的数据库中填充多个条目(一个表,有1000-10000行)。我看过一些教程,我不确定最好的方法。我是否应该在每次启动应用程序时检查数据库是否存在,如果不存在,则创建数据库并插入我需要的数千条记录?还是有更好的方法来处理这个问题?理想情况下,它可以作为应用程序安装过程的一部分,但我不确定这是否可行。任何反馈都将不胜感激。我在这里的方式是在资产文件夹中提供一个预填充的数据库。您可以在那里插入文件并按原样使用它们。但是,请注意,有1MB的大小限制,因此可能需要拆分或压缩文件 压缩非常方便,操作系统本身也很好地支持压缩Database Android预填充数据库,database,android,Database,Android,我正在开发一个Android应用程序,在用户使用该应用程序之前,需要在该应用程序的数据库中填充多个条目(一个表,有1000-10000行)。我看过一些教程,我不确定最好的方法。我是否应该在每次启动应用程序时检查数据库是否存在,如果不存在,则创建数据库并插入我需要的数千条记录?还是有更好的方法来处理这个问题?理想情况下,它可以作为应用程序安装过程的一部分,但我不确定这是否可行。任何反馈都将不胜感激。我在这里的方式是在资产文件夹中提供一个预填充的数据库。您可以在那里插入文件并按原样使用它们。但是,请
希望这有帮助:-)来自SQLiteOpenHelper的JavaDoc: 用于管理数据库的帮助器类 创建和版本管理。你 创建一个子类实现 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase,int,int) 以及可选的onOpen(SQLiteDatabase), 这门课负责开课 数据库(如果存在),创建它 如果没有,请将其升级为 必要的。交易习惯于 确保数据库始终处于 明智的状态 有关示例,请参见 记事本中的NotePadProvider类 示例应用程序,在示例中/ SDK的目录 所以如果你扩展这个类,你有3个方法,在某些情况下会被调用,你可以选择怎么做。
这是最佳实践:)下面是一个如何创建和填充数据库的示例,您只需在应用程序安装中执行此操作,这只会创建一个条目,尽管对于您想要执行的操作来说可能效率低下
private static class settingsDatabaseHelper extends SQLiteOpenHelper{
//SQL String for creating the table required
private static final String CREATE_SETTINGS_TABLE
= "CREATE TABLE tbl_settings(" +
"_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
"VOIPUSERNAME TEXT," +
"VOIPAUTHID TEXT," +
"PASSWORD TEXT," +
"VOIPDISPLAYNAME TEXT," +
"SIPPROXYSERVER TEXT," +
"SIPREGISTRAR TEXT," +
"SIPREALM TEXT," +
"EXPIRESTIME INTEGER);";
//constructor
public settingsDatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_SETTINGS_TABLE);
ContentValues initialValues = new ContentValues();
initialValues.put("VOIPUSERNAME", "xxxxx");
initialValues.put("VOIPAUTHID", "xxxxxxxxxx");
initialValues.put("PASSWORD", "xxxxxx");
initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx");
initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx");
initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx");
initialValues.put("SIPREALM", "xxxxxxxxxx");
initialValues.put("EXPIRESTIME", xxxxxxxxxxx);
Log.d("1.6", "gets to here");
db.insert(SETTINGS_TABLE, null, initialValues);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " +
newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE);
onCreate(db);
}
}
//end helper class
}
请解释一下否决票的原因?我如何在“应用程序安装”中执行此操作?这部分代码是否仅在安装时执行?我不想将此作为答案发布,因为它不是真正的。考虑编写java在Android上构建数据库(例如,用ADB推送的CSV文件)。然后将其压缩到
/assets
进行安装。在非Android环境中尝试完全符合Android的期望对我来说是一个脆弱的构建步骤。@Jondi212链接中的HTML错误。大小限制为1 MB。