如何将初始数据添加到SQLite数据库?

一旦应用程序第一次启动,我需要将初始值添加到SQLite数据库。 我应该怎么做?

Solutions Collecting From Web of "如何将初始数据添加到SQLite数据库?"

在DBAdapter.java类文件中,你可以做到这一点。


@Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_1); db.execSQL(CREATE_TABLE_2); db.execSQL(CREATE_TABLE_3); db.execSQL("insert into " + DATABASE_TABLE3 + "(" + KEY_ROWID + "," + KEY_DEF + ") values(1,'')"); } 

像这种types。

您可以创build自己的SQLite数据库,将其放入资产文件夹并访问它,如此链接的答案中所示: 将您自己的SQLite数据库添加到android应用程序

像这样的一次或第一次加载的要求是常见的。

1)设置一个名为FIRSTLOAD的标志variables并将其设置为True。 请务必将此variables保存到设备中的独立存储中,以便每次启动应用程序时都能读回。 2)创build一个检查FIRSTLOAD值的方法,只有在FIRSTLOAD为真时才执行。 把你的代码'添加到SQLite数据库的初始值'在这里。 然后将FIRSTLOADvariables设置为false。 这样它只会执行一次代码!

 Boolean FIRSTLOAD= new Boolean("true"); void SetInitialValues() { if(!FIRSTLOAD) return; // insert your code to run only when application is started first time here FIRSTLOAD = False; } 

你应该为此使用SQLiteOpenHelper

  private static class OpenHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "rss.sqlite"; private static final int DATABASE_VERSION = 1; OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE RSS (TITLE TEXT, LINK TEXT, DESCR TEXT, PUBDATE DATE, GUID TEXT, READ TEXT, TYPE TEXT)"); db.execSQL("CREATE TABLE PAGE (LINK TEXT, CONTENT TEXT)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } } 

并在代码中使用它

  OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); 

每次在应用程序中首次打开数据库时,应该检查数据库中的对象数量。 不要忘记,用户可以释放所有数据。

  //Open DataBase MyDb.Open(); //Get All List MyCursor = MyDb.getAllNames(); //You should have a function to get all the table data //First Time we open Database, add default Values if ( MyCursor.getCount() < 1 ) { AddDefaultValuesToDataBase(); } 

从这里你可以继续得到值。

希望它能帮助BR,Adrian。

如果你使用org.droidparts库OR-Mapper来访问你的数据库,你可以这样做。

在你的执行中

 public class CategoryEntityMgr extends EntityManager<Category> { public CategoryEntityMgr(Context ctx) { super(Category.class, ctx); } // NEW --> this one must be used in onCreateTables or you will receive a database locked exception private CategoryEntityMgr(Context ctx, SQLiteDatabase db) { super(Category.class, ctx, db); } } 

在你的AbstractDbOpenHelper的实现中:

 protected void onCreateTables(SQLiteDatabase db) { // create your tables as usual createTables(db, Booking.class, Category.class); // Use a new instance of your entity manager // but use the 2nd constructor to provide the db connection CategoryEntityMgr mgr = new CategoryEntityMgr(ctx, db); // add the new table row / entity you an to have Category c = new Category(); c.name = "the value for this column"; mgr.createOrUpdate(c); }