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

时间:2011-05-21 09:53:43

标签: java android sql sqlite

首次启动应用程序后,我需要向SQLite数据库添加初始值。我该怎么办?

6 个答案:

答案 0 :(得分:13)

在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,'')");
    }

喜欢这种类型。

答案 1 :(得分:2)

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

1)设置名为FIRSTLOAD的标志变量并将其设置为True。确保将此变量保存到设备中的独立存储器,以便在每次启动应用程序时进行回读。 2)创建一个检查FIRSTLOAD值的方法,仅在FIRSTLOAD为真时执行。在此处放置“将[s]初始值添加到SQLite数据库”的代码。然后将FIRSTLOAD变量设置为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;
}

答案 2 :(得分:2)

您可以创建自己的SQLite数据库,放入资源文件夹并访问它,如以下链接的答案所示: adding your own SQLite database to an android application

答案 3 :(得分:2)

你应该使用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();

答案 4 :(得分:1)

如果您使用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);
}

答案 5 :(得分:0)

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

    //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, 阿德里安。