我试图在我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
);
}
答案 0 :(得分:3)
不要使用db = getWritableDatabase();
。这导致循环。
将SQLiteDatabase
作为参数传递给SeedData(SQLiteDatabase db)
方法
onCreate