猿问

Android预置数据库

Android预置数据库

我正在开发一个Android应用程序,在用户使用该应用程序之前,它需要在应用程序的数据库中填充几个条目(一个表,有1000-10000行)。我已经看过一些教程,我不确定做这件事的最佳方法。我是否应该在每次启动应用程序时检查数据库是否存在,如果没有数据库,应该创建数据库并插入我需要的数千条记录吗?还是有更好的方法来处理这个问题?理想情况下,它可以作为应用程序安装过程的一部分,但我不确定这是否可行。如有任何反馈,将不胜感激。



Helenr
浏览 641回答 3
3回答

慕运维8079593

下面是一个如何创建和填充数据库的例子,您可以在应用程序安装上这样做,这只会创建一个条目,尽管这样做可能对您想要做的事情效率很低。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}

有只小跳蛙

我现在要做的就是在资产文件夹中发布一个预先填充的数据库。你可以在那里放进文件,然后按他们的原样使用。但是,请注意,大小限制为1MB,因此您可能不得不拆分或压缩文件。压缩非常方便,操作系统本身也很好地支持。希望这会有帮助:)
随时随地看视频慕课网APP
我要回答