title: Android SQLite - Primary Key - Inserting into table
body: <p>Im in my final stages of creating a database for my android app, however, I cannot seem to get my primary key to increment. Here is my code where I set it up, </p>
  
  <pre><code>public class DatabaseHandler extends SQLiteOpenHelper {
  
      // All Static variables
      // Database Version
      private static final int DATABASE_VERSION = 17;
  
      // Database Name
      private static final String DATABASE_NAME = "journeyManager";
  
      // Contacts table name
      public static final String TABLE_JOURNEY = "journey";
  
      // Contacts Table Columns names
      private static final String KEY_P = "key";
      private static final String KEY_ID = "id";
      private static final String KEY_DIST = "distance";
      private static final String KEY_MPG = "mpg";
      private static final String KEY_COST = "cost";
  
      public DatabaseHandler(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }
  
      // Creating Tables
      @Override
      public void onCreate(SQLiteDatabase db) {
          String CREATE_JOURNEY_TABLE = "CREATE TABLE " + TABLE_JOURNEY + "("
                  + KEY_P + " INTEGER PRIMARY KEY," + KEY_ID + " TEXT," + KEY_DIST + " TEXT,"
                  + KEY_MPG + " TEXT," + KEY_COST + " TEXT )";
          db.execSQL(CREATE_JOURNEY_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_JOURNEY);
  
          // Create tables again
          onCreate(db);
      }
  
      /**
       * All CRUD(Create, Read, Update, Delete) Operations
       */
  
      // Adding new contact
      void addJourneyData(Journey journey) {
          SQLiteDatabase db = this.getWritableDatabase();
  
          ContentValues values = new ContentValues();
          values.put(KEY_P, journey.getpKey());
          values.put(KEY_ID, journey.getId());
          values.put(KEY_DIST, journey.getDistance()); // Contact Name
          values.put(KEY_MPG, journey.getMpg()); // Contact Phone
          values.put(KEY_COST, journey.getCost()); // Contact Phone
  
          // Inserting Row
          db.insert(TABLE_JOURNEY, null, values);
          db.close(); // Closing database connection
      }
  
      // Getting single contact
      Journey getJourney(int id) {
          SQLiteDatabase db = this.getReadableDatabase();
  
          Cursor cursor = db.query(TABLE_JOURNEY, new String[] { KEY_P + KEY_ID + 
                  KEY_DIST, KEY_MPG, KEY_COST }, KEY_P + "=?",
                  new String[] { String.valueOf(id) }, null, null, null, null);
          if (cursor != null)
              cursor.moveToFirst();
  
          Journey journey = new Journey();
          journey.setPkey(Integer.parseInt(cursor.getString(0)));
          journey.setId(String.valueOf(cursor.getString(1)));
          journey.setMpg(String.valueOf(cursor.getString(2)));
          journey.setDistance(String.valueOf(cursor.getString(3)));
          journey.setCost(String.valueOf(cursor.getString(4)));
          // return contact
          return journey;
      }
  
      // Getting All Contacts
      public List&lt;Journey&gt; getAllJourneys() {
          List&lt;Journey&gt; journeyList = new ArrayList&lt;Journey&gt;();
          // Select All Query
          String selectQuery = "SELECT  * FROM " + TABLE_JOURNEY;
  
          SQLiteDatabase db = this.getWritableDatabase();
          Cursor cursor = db.rawQuery(selectQuery, null);
  
          // looping through all rows and adding to list
          if (cursor.moveToFirst()) {
              do {
                  Journey journey = new Journey();
                  journey.setPkey(Integer.parseInt(cursor.getString(0)));
                  journey.setId(String.valueOf(cursor.getString(1)));
                  journey.setMpg(String.valueOf(cursor.getString(2)));
                  journey.setDistance(String.valueOf(cursor.getString(3)));
                  journey.setCost(String.valueOf(cursor.getString(4)));
                  // Adding contact to list
                  journeyList.add(journey);
              } while (cursor.moveToNext());
          }
  
          // return contact list
          return journeyList;
      } 
  }
  </code></pre>
  
  <p>Here is where I add the details into a database from a button on another activity,</p>
  
  <pre><code>db.addJourneyData(new Journey(1,timeStamp, distanceLabel, mpgAnswer, pplAnswer));
  </code></pre>
  
  <p>I get to the point, where it will add the first one in, but from then on it will say the primary key is not unique - therefore it doesn't update the database. </p>
  
  <p>Also, I want the data to be in descending order, to do this, I use DESC, but where shall I place this?</p>
  
  <p>Any help would be appreciated,</p>
  
  <p>Many thanks,</p>