Ошибка установки ключа SQLite - почему так? - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать базу данных и таблицу с помощью обработчика БД и вставить данные в MainActivty.

Проблема в том, что функция Data instertig работала только тогда, когда я не установил первичный ключ.

Вот журнал cat.

android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: keikoTable._id (code 1555 SQLITE_CONSTRAINT_PRIMARYKEY)

DBhandler.class

 @Override
public void onCreate(SQLiteDatabase db) {

    String sql = "CREATE TABLE " +  TABLE_INFO + "(_id text PRIMARY KEY , year text, " +
            " month text, date text, chek integer, log text)";

    db.execSQL(sql);
}

MainActivity. java

 public void dbInsert (String year, String month, String date, String log) {
    int doublechk = 0;


     String idCombine = year + month + date + doublechk;

     Cursor cursor = readdb.rawQuery("SELECT _id FROM " + TABLE_INFO, null);

     while (cursor.moveToNext()){
         if (cursor.getString(0) == idCombine){
             doublechk ++;
             idCombine = year + month + date + doublechk;
         } else {
             break;
         }
     }


    String sql = "INSERT INTO " + TABLE_INFO  + " VALUES ('" + idCombine + "', '" + year + "', '"+ month  + "', '"
            + date  + "', '" + doublechk + "', '" + log + "')";
    db.execSQL(sql);
}

1 Ответ

1 голос
/ 03 апреля 2020

Из официального руководства SQLiteConstraintException

Исключение, указывающее на нарушение ограничения целостности.

Вы должны исправить заявление

String sql = "CREATE TABLE " +  TABLE_INFO + "( _id INTEGER PRIMARY KEY 

И

if (cursor.getInt(0) == idCombine){

Затем Удалить и запустить снова .

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