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
- Cómo puedo limitar el número de filas en la tabla SQLite de Android
- Ordenar una lista en orden ascendente por fecha desde sqlite
- ¿Cómo puedo mantener mi base de datos en una tarjeta SD y utilizar ORMLite?
- Cómo probar proveedores de contenido en Android
- Cómo actualizar la base de datos Sqlite para una sola columna utilizando cláusula WHERE en android
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
- Android: la base de datos está bloqueada
- SQLite static openDatabase error de método de base de datos en Android
- Android obtener la imagen de disco de base de datos es malformado (código 11) error
- Cómo crear tablas anidadas en la base de datos SQLite ?? (androide)
- Android: Diseño de uno-a-muchos de SQLite
- SQLiteException Error desconocido
- Sincronización local de SQLite con Firebase
- ¿Cómo puedo crear una función definida por el usuario en SQLite?
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.