1

SQLite データベースを使用するコンテンツ プロバイダーに挿入できません。

キーと値の 2 つの列を持つ単純なキー値テーブルを実装しようとしています。どちらもTEXT.

関連するコードとスタック トレース。

// SQL for creating database
private static final String DATABASE_CREATE =
        "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + KEY +
        " TEXT, " + VALUE + " TEXT);";

// The insert method
@Override
public Uri insert(Uri uri, ContentValues values) {
    SQLiteDatabase mdb = mdbHelper.getWritableDatabase();

    long key = mdb.insert(MessagesDbHelper.TABLE_NAME, null, values);
    mdb.close();

    return Uri.parse(URI + "/" + key);
}

// The insert test
private boolean testInsert() {
    try {
        for (int i = 0; i < TEST_CNT; i++) {
            mContentResolver.insert(mUri, mContentValues[i]);
        }
    } catch (Exception e) {
        return false;
    }

    return true;
}

// initializes content values for insert test
private ContentValues[] initTestValues() {
    ContentValues[] cv = new ContentValues[TEST_CNT];
    for (int i = 0; i < TEST_CNT; i++) {
        cv[i] = new ContentValues();
        cv[i].put(KEY_FIELD, "key" + Integer.toString(i));
        cv[i].put(VALUE_FIELD, "val" + Integer.toString(i));
    }

    return cv;
}

// static variables
private static final String KEY_FIELD = "key";
private static final String VALUE_FIELD = "value";

トレースの開始:

03-04 02:09:18.553: E/SQLiteLog(1531): (20) statement aborts at 6: [INSERT INTO messages(value,key) VALUES (?,?)] datatype mismatch
03-04 02:09:18.573: E/SQLiteDatabase(1531): Error inserting value=val49 key=key49
03-04 02:09:18.573: E/SQLiteDatabase(1531): android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20)
4

0 に答える 0