在Seed上递归调用getDatabase

时间:2014-08-14 13:46:41

标签: android android-sqlite

我试图在我onCreate的{​​{1}}方法中使用testdata为我的sqlite数据库播种...但是,为什么我尝试它仍然无效也无关紧要..我得{ {1}}递归调用。

这是我的SqliteOpenHelper类的代码..

SqliteOpenHelper

有没有其他方法可以使用数据或任何其他种子方法插入多行?我不喜欢简单的SQL查询,我仍然想使用SqliteDatabase getDatabase

我也尝试过创建自定义的Insert方法,并从SeedData方法调用它,但再次出现递归错误:

@Override
public void onCreate(SQLiteDatabase db) {
    try {
        db.execSQL(SQL_CREATE_CONTACT);
        SeedData();
    } catch (SQLException e) {
        Log.d("ContactDbHelper", "Create Database failed" + e.getMessage());
    }
}

private void SeedData() {

    db = getWritableDatabase();

    Contact contact = new Contact("Test1", "CEO/Founder", "http://test.se/system/data/6816/medium/test1.jpg", "blalblalblalblalblalbalbalallbalabalalbalb");
    // Create ContentValues
    ContentValues contentValues = new ContentValues();
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_NAME, contact.getName());
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_PROFESSION, contact.getProfession());
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_URL, contact.getUrl());
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_DESCRIPTION, contact.getDescription());

    // Insert values into Contact table rows
    db.insert(
            ContactContract.Contact.TABLE_NAME,
            null,
            contentValues
    );

    Contact contact2 = new Contact("Test2", "Employee", "http://test2.se/system/data/6816/medium/test2.jpg", "asdadsadadadadasdasdadsasds");
    // Create ContentValues
    ContentValues contentValues2 = new ContentValues();
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_NAME, contact.getName());
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_PROFESSION, contact.getProfession());
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_URL, contact.getUrl());
    contentValues.put(ContactContract.Contact.COLUMN_NAME_CONTACT_DESCRIPTION, contact.getDescription());

    // Insert values into Contact table rows
    db.insert(
            ContactContract.Contact.TABLE_NAME,
            null,
            contentValues2
    );

}

1 个答案:

答案 0 :(得分:3)

不要使用db = getWritableDatabase();。这导致循环。

SQLiteDatabase作为参数传递给SeedData(SQLiteDatabase db)方法

中的onCreate