title: Android. SQLite Exception: no such column _id
body: <p>Im having some troubles trying to get the info stored in my database and showing it in a ListView.</p>
  
  <p>This is the ListActivity where i want to show the rows:</p>
  
  <pre><code>public class Prueba extends ListActivity{
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.i_prueba);
  
          DataBaseAccess db = new DataBaseAccess(this);
          db.open();
  
          Cursor result = db.getAllContact();
          startManagingCursor(result);
  
  
          // the desired columns to be bound
          String[] columns = new String[] {"_id", "nombre", "telefono", "mail"};
          // the XML defined views which the data will be bound to
          int[] to = new int[] { R.id.textid, R.id.textNombre, R.id.textTelefono, R.id.textMail };
  
          SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.i_listadb, result, columns, to);
  
  
          this.setListAdapter(mAdapter);
  
      }
  </code></pre>
  
  <p>The DB class. Here is the method getAllContact where i get the error:</p>
  
  <p>public class DataBaseAccess {</p>
  
  <pre><code>public static final String NOMBRE = "nombre";
  public static final String TELEFONO = "telefono";
  public static final String MAIL = "mail";
  public static final String ID = "_id";
  
  
      public DataBaseAccess(Context context) {
          this.androidContext = context;
  //DataBaseHelper is another class where the Database is created. In the "onCreate" //method of that class is where i make the CREATE TABLE and add some values to that //table.
          dbHelper = new DataBaseHelper(androidContext);  
      }
  
  
  
      public void open() throws SQLException {
          db = dbHelper.getWritableDatabase();
          }
  
  
  
  [...MORE METHODS...]
  
      public Cursor getAllContact(){
          String[] columnas = new String[] {ID, NOMBRE, TELEFONO, MAIL};
          Cursor mCursor = dbHelper.query("t_contactos", columnas, null, null, null, null, null);
      if (mCursor != null){
          mCursor.moveToFirst();
      }
      return mCursor;
  }
  </code></pre>
  
  <p>}</p>
  
  <p>And here is the error messages from the LogCat:</p>
  
  <pre><code>E/AndroidRuntime(  636): Uncaught handler: thread main exiting due to uncaught exception
  
  E/AndroidRuntime(  636): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pfc.android/com.pfc.android.Prueba}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, nombre, telefono, mail FROM t_contactos
  
  E/AndroidRuntime(  636):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
  
  E/AndroidRuntime(  636):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
  
  E/AndroidRuntime(  636):    at android.app.ActivityThread.access$2100(ActivityThread.java:116)
  
  E/AndroidRuntime(  636):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
  
  E/AndroidRuntime(  636):    at android.os.Handler.dispatchMessage(Handler.java:99)
  
  E/AndroidRuntime(  636):    at android.os.Looper.loop(Looper.java:123)
  
  E/AndroidRuntime(  636):    at android.app.ActivityThread.main(ActivityThread.java:4203)
  
  E/AndroidRuntime(  636):    at java.lang.reflect.Method.invokeNative(Native Method)
  
  E/AndroidRuntime(  636):    at java.lang.reflect.Method.invoke(Method.java:521)
  
  E/AndroidRuntime(  636):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
  
  E/AndroidRuntime(  636):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
  
  E/AndroidRuntime(  636):    at dalvik.system.NativeStart.main(Native Method)
  
  E/AndroidRuntime(  636): Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, nombre, telefono, mail FROM t_contactos
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteProgram.native_compile(Native Method)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteProgram.&lt;init&gt;(SQLiteProgram.java:59)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteQuery.&lt;init&gt;(SQLiteQuery.java:49)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1118)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1006)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:964)
  
  E/AndroidRuntime(  636):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1041)
  
  E/AndroidRuntime(  636):    at com.pfc.android.DataBaseAccess.getAllContact(DataBaseAccess.java:97)
  
  E/AndroidRuntime(  636):    at com.pfc.android.Prueba.onCreate(Prueba.java:21)
  
  E/AndroidRuntime(  636):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
  
  E/AndroidRuntime(  636):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
  
  E/AndroidRuntime(  636):    ... 11 more
  </code></pre>
  
  <p>So, can anybody help to get through this?
  Thank you in advance !</p>