SQLite.insert возвращает -1, но данные вставлены в базу данных - PullRequest
3 голосов
/ 28 июля 2011

У меня есть такой метод:

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

Этот метод возвращает -1, но данные вставлены в базу данных. Я проверил свои данные, все в порядке. Любой может помочь мне :(

Это мой стол:

СОЗДАТЬ ТАБЛИЦУ выбора (category_no INTEGER NOT NULL, subcategory_no INTEGER NOT NULL, quiz_no INTEGER NOT NULL, choice_no INTEGER NOT NULL, ответить TEXT NOT NULL, content_id INTEGER NOT NULL, первичный ключ (category_no_ quiz_no); выбор из категории; *

Ответы [ 2 ]

7 голосов
/ 28 июля 2011

-1 возвращается, если произошла ошибка..insert(...) возвращает идентификатор строки новой вставленной записи.Это важно?У вас есть поле _id в вашей базе данных?

0 голосов
/ 28 июля 2011

Я проверил вашу проблему, но она работает нормально.

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();

Может быть, у вас возникли другие проблемы? Я проверил вашу проблему, введя различные значения, и она работает нормально для меня.В случае каких-либо сомнений создайте новый проект и попробуйте запустить этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...