1
我通過ContentProvider插入數據到SQLiteDatabase。我的代碼行:ContentProvider插入不插入數據到SQLiteDatabase
Uri mNewUri = getContentResolver().insert(MY_URI, values);
值是,我已經填充了通過各種調用的put方法的數據ContentValues變量。在調試器中,我看到insert方法返回一個有效的Uri到mNewUri中。但是,當我嘗試顯示數據時,我沒有收到任何數據。當我去命令行和嘗試:
cmd> adb -e shell
cmd> sqlite3 /data/data/com.MyProject.project/databases/db-name.db
sqlite> select * from MyInfo_tbl;
(MyInfo_tbl是表在我的數據庫類),但是我看到表中沒有結果。在我的ContentProvider的插入方法是:
public Uri insert(Uri uri, ContentValues values) {
int uriType = sURIMatcher.match(uri);
if (uriType != ALLDATA) {
throw new IllegalArgumentException("Invalid URI for insert");
}
SQLiteDatabase sqlDB = mDB.getWritableDatabase();
try {
long newID = sqlDB.insertOrThrow(TABLE_BASEPATH,
null, values);
if (newID > 0) {
Uri newUri = ContentUris.withAppendedId(uri, newID);
getContext().getContentResolver().notifyChange(uri, null);
return newUri;
} else {
throw new SQLException("Failed to insert row into " + uri);
}
} catch (SQLiteConstraintException e) {
Log.i(DEBUG_TAG, "Ignoring constraint failure.");
}
return null;
}
有誰知道爲什麼會或在那裏我可以開始尋找解決這個問題?謝謝!
PS我也試圖通過調用我的數據庫提供程序的onCreate方法中的db.execSQL行插入數據到數據庫。這也不會插入任何數據。
'MyInfo_tbl'和'TABLE_BASEPATH'是同一件事嗎? – Luksprog
是的,它們是一樣的東西。 – Melanie
您是否試圖查詢該方法插入返回的'Uri'的提供者? – Luksprog