Android 如何使用ContentProvider获取insert()错误的原因?
我有一个代码,使用自定义ContentProvider将一行插入数据库:Android 如何使用ContentProvider获取insert()错误的原因?,android,sqlite,android-contentprovider,Android,Sqlite,Android Contentprovider,我有一个代码,使用自定义ContentProvider将一行插入数据库: Uri contentUri = Uri.withAppendedPath(DataProvider.CONTENT_URI, UserTable.TABLE_NAME); Uri resultUri = getContext().getContentResolver().insert(contentUri, contentValues); boolean success = (Long.parseLong(resultU
Uri contentUri = Uri.withAppendedPath(DataProvider.CONTENT_URI, UserTable.TABLE_NAME);
Uri resultUri = getContext().getContentResolver().insert(contentUri, contentValues);
boolean success = (Long.parseLong(resultUri.getLastPathSegment()) != -1);
插入方法在ContentProvider中定义如下:
public class DataProvider extends ContentProvider {
// ...
@Override
public Uri insert(Uri uri, ContentValues initialValues) {
String table = getTableName(uri);
SQLiteDatabase database = dbHelper.getWritableDatabase();
long value = database.insert(table, null, initialValues);
return Uri.withAppendedPath(CONTENT_URI, String.valueOf(value));
}
}
我注意到,有时,插入失败,返回的行ID等于-1,正如您在第一段代码的第三行中看到的,成功应该为false。问题是我无法理解原因,因为LogCat没有打印任何与SqlLite相关的异常。
为什么ContentProvider不告诉我这些错误的原因?要获得异常,请使用它。哇!我没有注意到这一点,我会努力的