SQLite.insert返回-1但数据插入数据库

时间:2011-07-28 02:33:46

标签: android sqlite

我有这样的方法:

protected long put(String tableName, ContentValues values) {
     SQLiteDatabase db = (!mInTransaction) ? mHelper.getWritableDatabase() : mDb;
     long success = db.insert(tableName, null, values);
     return success;
}

此方法返回-1但数据已插入数据库。我检查了我的数据,没关系。任何人都可以帮助我:(

这是我的表:

CREATE TABLE选项(category_no INTEGER NOT NULL,subcategory_no INTEGER NOT NULL,quiz_no INTEGER NOT NULL,choice_no INTEGER NOT NULL,answer TEXT NOT NULL,content_id INTEGER NOT NULL,PRIMARY KEY(category_no,quiz_no,choice_no));

2 个答案:

答案 0 :(得分:7)

如果发生错误,则返回

-1.insert(...)返回新插入记录的行ID。这很重要吗?你的数据库中有_id字段吗?

答案 1 :(得分:0)

我已检查过您的问题,但工作正常。

SQLiteDatabase db = openOrCreateDatabase("test.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
        String qry = "CREATE TABLE IF NOT EXISTS choices ( category_no INTEGER NOT NULL, subcategory_no INTEGER NOT NULL, quiz_no INTEGER NOT NULL, choice_no INTEGER NOT NULL, answer TEXT NOT NULL, content_id INTEGER NOT NULL, PRIMARY KEY ( category_no, quiz_no, choice_no ) )";
        db.execSQL(qry);

        ContentValues cv = new ContentValues();
        cv.put("category_no",2);
        cv.put("subcategory_no",5);
        cv.put("quiz_no",2);
        cv.put("choice_no",2);
        cv.put("answer",3);
        cv.put("content_id",4);

        long i = db.insert("choices", null, cv);
        Log.d("Values of I = ", "******************* " + i + " ***************");
        db.close();

可能你有任何其他问题 我通过输入不同的值来检查您的问题,它对我来说很好。如果您有任何疑问,请创建一个新项目并尝试运行此代码。