title: column _id does not exist
body: <p>the error in my logcat is such</p>
  
  <p>Logcat</p>
  
  <pre><code>08-29 08:20:57.961: ERROR/AndroidRuntime(1766): java.lang.RuntimeException: Unable to start activity ComponentInfo{one.two/one.two.Booking}: java.lang.IllegalArgumentException: column '_id' does not exist
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.ActivityThread.access$1800(ActivityThread.java:112)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.os.Handler.dispatchMessage(Handler.java:99)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.os.Looper.loop(Looper.java:123)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.ActivityThread.main(ActivityThread.java:3948)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at java.lang.reflect.Method.invokeNative(Native Method)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at java.lang.reflect.Method.invoke(Method.java:521)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at dalvik.system.NativeStart.main(Native Method)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.widget.CursorAdapter.init(CursorAdapter.java:111)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.widget.CursorAdapter.&lt;init&gt;(CursorAdapter.java:90)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.widget.ResourceCursorAdapter.&lt;init&gt;(ResourceCursorAdapter.java:47)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.widget.SimpleCursorAdapter.&lt;init&gt;(SimpleCursorAdapter.java:85)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at one.two.Booking.onCreate(Booking.java:34)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
  08-29 08:20:57.961: ERROR/AndroidRuntime(1766):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
  </code></pre>
  
  <p>Part of my DBAdapter.java</p>
  
  <pre><code>public void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          db = new DBAdapter(this);
          db.open();
          setContentView(R.layout.booking);
          /*long id; 
          id = db.insertTime(
          new String("08:00")); */
          Cursor spinnerCursor = db.getSpinnerData(); 
          startManagingCursor(spinnerCursor);
          Spinner colourSpinner = (Spinner) findViewById(R.id.spinner);
  </code></pre>
  
  <p>Creation of DB</p>
  
  <pre><code>package one.two;
  
  
  import java.io.IOException;
  
  import android.content.ContentValues;
  import android.content.Context;
  import android.database.Cursor;
  import android.database.SQLException;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteException;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.util.Log;
  
  public class DBAdapter 
  {   
      private static String DB_PATH = "/data/data/one.two/databases/"; 
      private static String DB_NAME = "irsyad";
  
      //values for the login table
      public static final String KEY_ROWID = "_id";
      public static final String KEY_USERNAME = "Username";
      public static final String KEY_PASSWORD = "Password";
      public static final String KEY_LNAME = "LastName";
      public static final String KEY_FNAME ="FirstName";
  
      public static final String KEY_ROWID2 = "_id";
      public static final String KEY_STATUS = "status";
      public static final String KEY_DESTINATION = "destination";
      public static final String KEY_ARRIVAL = "arrival";
      public static final String KEY_FERRY ="ferry";
  
      private static final String TAG = "DBAdapter";
  
      //declare Database name, tables names
      private static final String DATABASE_NAME = "irsyad";
      private static final String DATABASE_TABLE = "User";
      private static final String DATABASE_TABLE_2 = "port";
      private static final int DATABASE_VERSION = 1;
  
      //declares the rules for the database tables
      private static final String DATABASE_CREATE =
          "create table user (_id integer primary key autoincrement, "
          + "Username text not null, Password text not null,"
          + "LastName text not null, FirstName text not null);";
  
      private static final String DATABASE_CREATE_2 =
          "create table port (_id integer primary key autoincrement, "
          + "status text null, destination text null,"
          + "arrival text null, ferry text null);";
  
      private final Context context; 
  
      private DatabaseHelper DBHelper;
      private SQLiteDatabase db;
  
      public DBAdapter(Context ctx) 
      {
          this.context = ctx;
          DBHelper = new DatabaseHelper(context);
      }
  
      private static class DatabaseHelper extends SQLiteOpenHelper 
      {
          DatabaseHelper(Context context) 
          {
              super(context, DATABASE_NAME, null, DATABASE_VERSION);
          }
  
          //Create the tables with the rules we set.
          @Override
          public void onCreate(SQLiteDatabase db) 
          {
              db.execSQL(DATABASE_CREATE);
              db.execSQL(DATABASE_CREATE_2);
          }
  
          //OnUpgrade is only for use when u changed the database's version to 2 etc.
          @Override
          public void onUpgrade(SQLiteDatabase db, int oldVersion, 
          int newVersion) 
          {
              Log.w(TAG, "Upgrading database from version " + oldVersion 
                      + " to "
                      + newVersion + ", which will destroy all old data");
              db.execSQL("DROP TABLE IF EXISTS port");
              onCreate(db);
          }
      }    
  
      //---opens the database---
      public DBAdapter open() throws SQLException 
      {
          db = DBHelper.getWritableDatabase();
          return this;
      }
  
      //---closes the database---    
      public void close() 
      {
          DBHelper.close();
      }
  
      //Method for inserting login details, can be used in other java files when DBAdapter is
      //declared in the java file. e.g. DBAdapter db = new DBAdapter(this);
      public long insertUser(String Username, String Password, String LastName, String FirstName) 
      {
          ContentValues initialValues = new ContentValues();
          initialValues.put(KEY_USERNAME, Username);
          initialValues.put(KEY_PASSWORD, Password);
          initialValues.put(KEY_LNAME, LastName);
          initialValues.put(KEY_FNAME, FirstName);
          return db.insert(DATABASE_TABLE, null, initialValues);
      }
     /* public long insertTime(String arrival) 
      { 
      ContentValues initialValue = new ContentValues(); 
      initialValue.put(KEY_ARRIVAL, arrival); 
      return db.insert(DATABASE_TABLE_2, KEY_ARRIVAL, initialValue); 
      }*/
  
      //---deletes a particular title---
      public boolean deleteUser(long rowId) 
      {
          return db.delete(DATABASE_TABLE, KEY_ROWID + 
                  "=" + rowId, null) &gt; 0;
      }
  
      //method for retrieving all the inputs from database
      public Cursor getAllUser() 
      {
          return db.query(DATABASE_TABLE, new String[] {
                  KEY_ROWID, 
                  KEY_USERNAME,
                  KEY_PASSWORD,
                  KEY_LNAME,
                  KEY_FNAME,},
                  null, 
                  null, 
                  null, 
                  null, 
                  null);
      }   
  
      public Cursor getAllData() 
      {
          return db.query(DATABASE_TABLE_2, new String[] {
                  KEY_ROWID2, 
                  KEY_STATUS,
                  KEY_DESTINATION,
                  KEY_ARRIVAL,
                  KEY_FERRY,},
                  null, 
                  null, 
                  null, 
                  null, 
                  null);
      }   
  
      //---retrieves a particular title---
      public Cursor getUser(long rowId) throws SQLException 
      {
          Cursor mCursor =
                  db.query(true, DATABASE_TABLE, new String[] {
                          KEY_ROWID,
                          KEY_USERNAME, 
                          KEY_PASSWORD,
                          KEY_LNAME,
                          KEY_FNAME,}, 
                          KEY_ROWID + "=" + rowId, 
                          null,
                          null, 
                          null, 
                          null, 
                          null);
          if (mCursor != null) {
              mCursor.moveToFirst();
          }
          return mCursor;
      }
  
      public Cursor getSpinnerData() throws SQLException 
      {
          Cursor mCursor =
                  db.query(DATABASE_TABLE_2, new String[] {               
                          KEY_ARRIVAL,}, 
                          null,
                          null, 
                          null, 
                          null, 
                          null);
          if (mCursor != null) {
              mCursor.moveToFirst();
          }
          return mCursor;
      }
  
      //---updates a title---
      public boolean updateUser(long rowId, String Username, String Password, String LastName, String FirstName)
      {
          ContentValues args = new ContentValues();
          args.put(KEY_USERNAME, Username);
          args.put(KEY_PASSWORD, Password);
          args.put(KEY_LNAME, LastName);
          args.put(KEY_FNAME, FirstName);
          return db.update(DATABASE_TABLE, args, 
                           KEY_ROWID + "=" + rowId, null) &gt; 0;
      }
  
      private boolean checkDataBase()
      {
  
          SQLiteDatabase checkDB = null;
  
          try
          {
              String myPath = DB_PATH + DB_NAME;
              checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
  
          }
          catch(SQLiteException e)
          {
              //database does't exist yet.
          }
  
          if(checkDB != null)
          {
              checkDB.close();
          }
  
          return checkDB != null ? true : false;
      }
  
      public void createDataBase() throws IOException
      {
  
          boolean dbExist = checkDataBase();
  
          if(dbExist)
          {
              //do nothing - database already exist
          }
          else
          {
               db.execSQL(DATABASE_CREATE);
               db.execSQL(DATABASE_CREATE_2);
  
          }
      }
  }
  </code></pre>