android sqlite excepción: java.lang.IllegalArgumentException: columna '_id' no existe

He creado una base de datos sql lite con las siguientes columnas:

static final String dbName="demoDB"; static final String tableName="Employees"; static final String colID="EmployeeID"; 

entonces

 public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("CREATE TABLE "+tableName+" ("+colID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+ colName+" TEXT, "+colAge+" Integer);"); } 

Quiero seleccionar todos los registros de la base de datos como este y mostrarlos en un gridview:

 SQLiteDatabase db=this.getWritableDatabase(); Cursor cur= db.rawQuery("Select "+colName+", "+colAge+" from "+tableName, new String [] {}); String [] from=new String []{DatabaseHelper.colName,DatabaseHelper.colAge}; int [] to=new int [] {R.id.colName,R.id.colAge}; SimpleCursorAdapter sca=new SimpleCursorAdapter(this,R.layout.gridrow,c,from,to); GridView grid=(GridView)findViewById(R.id.grid); grid.setAdapter(sca); 

pero recibo la excepción siguiente:

 java.lang.IllegalArgumentException: column '_id' does not exist. 

la tabla db no tiene una columna con el nombre '_id'

así que qué está mal con este código

Gracias

una solución a este problema es utilizar select statment como este

seleccione EmpId como _id

causa que el adaptador requiera una columna con el _id del nombre como usted dijo

Gracias

Cuando se utiliza un adaptador, su tabla siempre debe tener la columna de clave principal denominada como " _id "

Solo cambia

 static final String colID="EmployeeID"; 

a

 static final String colID="_id"; 

¡Aclamaciones!

CursorAdapter s requieren una columna INTEGER PRIMARY KEY denominada _id (disponible en BaseColumns ).

Prueba de esta manera

 SELECT _ID as _ID,_ID as _id , cont_type ,.... FROM DATABASE_TABLE ; When _ID only ,Message is column '_id' does not exist. When _id only ,Message is column '_ID' does not exist. 

Intenté _id (minúsculas) en lugar de _ID (mayúsculas) resuelve el problema. Asegúrese de volver a crear el DB una vez más con _id (minúsculas)

Muchas gracias

Si carga su base de datos de activos: Después de cambiar su id a _id en la tabla base de base de datos, y su carga de la carpeta de activos que desinstala la aplicación primero, de lo contrario, se utilizará su base de datos antigua.

  • ListView no se actualiza al agregar a SQLiteDatabase
  • Excepción aleatoria android.database.sqlite.SQLiteException: no se puede abrir el archivo de base de datos
  • Actualizar Recyclerview de otra actividad
  • Razones para utilizar la base de datos SQLite legible
  • implementar el marco de sincronización de Microsoft con el dispositivo Android
  • Aplicación Android phonegap que tiene problemas con SQlite y almacenamiento local en dispositivos Samsung Galaxy
  • Cambiar un valor en una columna en sqlite
  • Debería llamar a .close () en SQLiteDatabase y SQLiteOpenHelper
  • Consulta SQL de Android con dos cláusulas "Where"
  • ¿Cómo acceder a Android a una base de datos sqlite incluida en la carpeta de activos?
  • Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.