【问题标题】:ContentProvider insert isn't inserting data to SQLiteDatabaseContentProvider insert 没有向 SQLiteDatabase 插入数据
【发布时间】:2012-11-08 22:04:37
【问题描述】:

我通过 ContentProvider 将数据插入 SQLiteDatabase。我的代码行:

Uri mNewUri = getContentResolver().insert(MY_URI, values);

values 是一个 ContentValues 变量,我通过对 put 方法的各种调用填充了数据。在调试器中,我看到 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_tblTABLE_BASEPATH 是同一个东西吗?
  • 是的,它们是一回事。
  • 您是否尝试向提供者查询插入方法返回的Uri
  • 如果我按照调试器中的代码进行操作,则 ContentUris.withAppendedId 行将返回 content://com.MyProject.project.MyProvider/MyInfo_tbl/1116。 PS见上文
  • insert 方法看起来不错,但有些奇怪。您是否在TABLE_BASEPATH 表中使用带有autoincrement 的列?表中是否已有 1115 值?另外,之前我指的是使用ContentProviderquery 方法检查条目。

标签: android android-contentprovider sqlite


【解决方案1】:

未在数据库中插入数据的原因可能是您的表创建查询由于缺少逗号或某些错误而无法成功执行,或者uri中存在问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多