全部。 我想在创建时在db(sqlite)中插入一些初始数据。android提供商初始数据
如果没有插入操作,该程序正常工作。但是当我添加它时,它会导致错误。我无法理解。它似乎是android获得一个可读取的db-handle来编写它?我不确定。或者,也许android不允许在DatabaseHelper的onCreate()方法中插入数据?希望有人能解决我的问题。
02-16 12:34:20.445: ERROR/AndroidRuntime(24947): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 3: /data/data/com.kbonez.prodo/databases/prodo.db
02-16 12:34:20.445: ERROR/AndroidRuntime(24947): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:170)
**02-16 12:34:20.445: ERROR/AndroidRuntime(24947): at com.kbonez.prodo.ProdoProvider.query(ProdoProvider.java:164)**
02-16 12:34:20.445: ERROR/AndroidRuntime(24947): at android.content.ContentProvider$Transport.query(ContentProvider.java:130)
02-16 12:34:20.445: ERROR/AndroidRuntime(24947): at android.content.ContentResolver.query(ContentResolver.java:202)
02-16 12:34:20.445: ERROR/AndroidRuntime(24947): at android.app.Activity.managedQuery(Activity.java:1495)
02-16 12:34:20.445: ERROR/AndroidRuntime(24947): at com.kbonez.prodo.ProdoList.onCreate(ProdoList.java:129)
我看行164,这是
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
我只是添加这些代码在我Provider.DatabaseHelper.onCreate()
final String insTemplate="insert into %s (%s,%s) values (%s);";
for(String i: ct.getResources().getStringArray(R.array.helpInit)){
db.execSQL(String.format(insTemplate,PRODO_TABLE_NAME,Structer.TITLE,Structer.NOTE,i));
}
======= ================================================== = 解决了!
谢谢所有人,我试过了。我使用这个
// Get the database and run the query
try{
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
Cursor c = qb.query(db, projection, selection, selectionArgs, null,
null, orderBy);
// Tell the cursor what uri to watch, so it knows when its source data
// changes
c.setNotificationUri(getContext().getContentResolver(), uri);
return c;
}catch(SQLException e){
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
return null;
}
但我不明白,为什么android不这样做,需要我们自己去做。
我仍然有问题。行164在query()方法中。你的意思是,如果我想插入这些初始数据。我应该尝试获取可写的数据库句柄,即使在查询方法中? – 9nix00 2011-02-16 05:40:49