title: UNIQUE constraint failed: sqlite database : android
body: <p>I am trying to insert values in table. But there is only one value inserted. I am getting an error in log cat when I am trying to insert new values. </p>
  
  <p>Log cat shows :</p>
  
  <pre><code>abort at 13 in [INSERT INTO event(totalminutesfrom,dayofweek,title,location,totalminutesto,id) VALUES (?,?,?,?,?,?)]: UNIQUE constraint failed: event.id
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: Error inserting totalminutesfrom=694 dayofweek=null title=qxs location=Eded &amp; Mariz totalminutesto=0 id=0
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase: android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: event.id (code 1555)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1471)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at com.example.siddhi.timetablelayout.EventTableHelper.addEvent(EventTableHelper.java:76)
  01-24 11:34:39.764 7763-7763/com.example.siddhi.timetablelayout E/SQLiteDatabase:     at com.example.siddhi.timetablelayout.AddEventActivity$5.onClick(AddEventActivity.java:217)
  </code></pre>
  
  <p>Its showing error on these two lines while inserting row.</p>
  
  <pre><code>db.insert(TABLE, null, values);
  
     db.addEvent(new EventData(eventTitle,dayOfWeek,totalMinutesFrom, totalMinutesTo,location));
  </code></pre>
  
  <p>EventTableHelper</p>
  
  <pre><code>public class EventTableHelper extends SQLiteOpenHelper {
  
  
      private static final String TABLE = "event";
      private static final String KEY_ID = "id";
      private static final String KEY_TITLE = "title";
      private static final String KEY_LOCATION = "location";
      private static final String KEY_DAY_OF_WEEK = "dayofweek";
      private static final String KEY_TOTAL_MINUTES_FROM = "totalminutesfrom";
      private static final String KEY_TOTAL_MINUTES_TO = "totalminutesto";
  
  
  
      public EventTableHelper(Context context) {
          super(context, Constants.DATABASE_NAME, null, Constants.DATABASE_VERSION);
          //3rd argument to be passed is CursorFactory instance
      }
  
      // Creating Tables
      @Override
      public void onCreate(SQLiteDatabase db) {
          //createTable(db);
      }
  
      public void createTable(SQLiteDatabase db){
          String CREATE_EVENTS_TABLE = "CREATE TABLE " + TABLE + "("
                  + KEY_ID + " INTEGER PRIMARY KEY," + KEY_TITLE + " TEXT,"
                  + KEY_DAY_OF_WEEK +"TEXT" + KEY_TOTAL_MINUTES_FROM +"INTEGER"
                  + KEY_TOTAL_MINUTES_TO + "INTEGER" +  KEY_LOCATION + "TEXT" +  ")";
  
          db.execSQL(CREATE_EVENTS_TABLE);
  
      }
      // Upgrading database
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          // Drop older table if existed
         // db.execSQL("DROP TABLE IF EXISTS " + TABLE);
  
        //  createTable(db);
  
          // Create tables again
          //onCreate(db);
      }
  
      // code to add the new contact
      public void addEvent(EventData event) {
          SQLiteDatabase db = this.getWritableDatabase();
  
          ContentValues values = new ContentValues();
          values.put(KEY_ID, event.getId());
          values.put(KEY_TITLE,event.getTitle()); // Contact Name
          values.put(KEY_DAY_OF_WEEK,event.getDayofWeek());
          values.put(KEY_TOTAL_MINUTES_FROM,event.getFromMinutes());
          values.put(KEY_TOTAL_MINUTES_TO,event.getToMinutes());
          values.put(KEY_LOCATION,event.getLocation());
          // Inserting Row
          db.insert(TABLE, null, values);
          //2nd argument is String containing nullColumnHack
          db.close(); // Closing database connection
      }
  
      // code to get the single contact
     EventData getEvent(int id) {
          SQLiteDatabase db = this.getReadableDatabase();
  
          Cursor cursor = db.query(TABLE, new String[] { KEY_ID,
                          KEY_TITLE, KEY_DAY_OF_WEEK, KEY_TOTAL_MINUTES_FROM,KEY_TOTAL_MINUTES_TO,KEY_LOCATION }, KEY_ID + "=?",
                  new String[] { String.valueOf(id) }, null, null, null, null);
          if (cursor != null)
              cursor.moveToFirst();
         EventData eventData = new EventData(Integer.parseInt(cursor.getString(0)),cursor.getString(1), cursor.getString(2),
                 cursor.getInt(3),cursor.getInt(4),cursor.getString(5));
  
          return eventData;
      }
  
  
  
      // code to get all contacts in a list view
      public List&lt;EventData&gt; getAllEvents() {
          List&lt;EventData&gt; conList = new ArrayList&lt;EventData&gt;();
          // Select All Query
          String selectQuery = "SELECT  * FROM " + TABLE;
  
          SQLiteDatabase db = this.getWritableDatabase();
          Cursor cursor = db.rawQuery(selectQuery, null);
  
          // looping through all rows and adding to list
          if (cursor.moveToFirst()) {
              do {
  
                  EventData event = new EventData();
  
                  event.setId(Integer.parseInt(cursor.getString(0)));
                  event.setTitle(cursor.getString(1));
                  event.setDayofWeek(cursor.getString(2));
                  event.setFromMinutes(cursor.getInt(3));
                  event.setToMinutes(cursor.getInt(4));
                  event.setLocation(cursor.getString(5));
                  // Adding contact to list
                  conList.add(event);
              } while (cursor.moveToNext());
          }
  
          // return contact list
          return conList;
      }
  }
  </code></pre>
  
  <p>How to solve this??</p>