我有这样的方法:
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));
答案 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();
可能你有任何其他问题 我通过输入不同的值来检查您的问题,它对我来说很好。如果您有任何疑问,请创建一个新项目并尝试运行此代码。