Нарушено ограничение Sqlite3 Android

  String CREATE_TRAIN_DATABASE = "CREATE TABLE IF NOT EXISTS "
        + DATABASE_TRAIN_FEATURES
        + "("
        + KEY_ROW_ID
        + " INTEGER PRIMARY KEY AUTOINCREMENT,"
        + KEY_USER_ID
        + " TEXT NOT NULL,"
        + KEY_COL_MEANX
        + " REAL NOT NULL,"
        + KEY_COL_MEANY
        + " REAL NOT NULL,"
        + KEY_COL_MEANZ
        + " REAL NOT NULL,"
        + KEY_COL_VARIANCEX
        + " REAL NOT NULL,"
        + KEY_COL_VARIANCEY
        + " REAL NOT NULL,"
        + KEY_COL_VARIANCEZ
        + " REAL NOT NULL,"
        + KEY_COL_CORRX
        + " REAL NOT NULL,"
        + KEY_COL_CORRY
        + " REAL NOT NULL,"
        + KEY_COL_CORRZ
        + " REAL NOT NULL,"
        + DATABASE_COL_Activity + " TEXT NOT NULL);";

На друго място добавям данни:

  ContentValues values = new ContentValues();
  String [] cols = setupCols(table);
  values.put(cols[0], email);
    int i = 1;
    for (Float reading : features) {
        values.put(cols[i], reading);
        ++i;
    }

  private String[] setupCols(String table) {
    if (DatabaseHelper.DATABASE_RAW_DATA.compareTo(table) != 0) {
        String[] columns = { DatabaseHelper.KEY_USER_ID,
                DatabaseHelper.KEY_COL_MEANX, DatabaseHelper.KEY_COL_MEANY,
                DatabaseHelper.KEY_COL_MEANZ,
                DatabaseHelper.KEY_COL_VARIANCEX,
                DatabaseHelper.KEY_COL_VARIANCEY,
                DatabaseHelper.KEY_COL_VARIANCEZ,
                DatabaseHelper.KEY_COL_CORRX, DatabaseHelper.KEY_COL_CORRY,
                DatabaseHelper.KEY_COL_CORRZ,
                DatabaseHelper.DATABASE_COL_Activity };
        return columns;
    } 
}

Всичко изглежда наред ... по отношение на данните. Не виждам никакви нули и самите данни изглеждат разумни за моето приложение. Но продължавам да получавам грешки при нарушаване на ограниченията. Не мога да разбера защо. Може ли да е частта за автоматично увеличаване? Тоест, ако напиша някои данни и след това по-късно се опитам да пренапиша някои данни (да речем, след като рестартирам приложението), то ще се опита ли да добави отново данни с първичния ключ, който вече е бил използван. Например, ако добавя някои данни с първичен ключ 1, след това рестартирам приложението и се опитам да добавя отново данни, ще започне ли отново от 1?

Съобщение за грешка:

  Error inserting Activity=Sitting VARIANCEY=0.0 CORRZ=0.0 VARIANCEZ=0.0 CORRY=0.0   
  user_id=admin CORRX=0.0 VARIANCEX=.233333332 MEANX = 617.7 MEANY=523.0 MEANZ=527.0
  android.database.sqlite.SQLLiteConstraintException:error code 19:constraint failed

person lars    schedule 15.04.2014    source източник


Отговори (1)


Във вашето съобщение за грешка не виждам колона CORRX, която е дефинирана като ненулева колона.

person chalup    schedule 15.04.2014
comment
Там е. Просто го добавих. Трябваше да е там. Но все пак добър улов. - person lars; 15.04.2014