viernes, 12 de junio de 2015

Consultar estructura de las tablas en una base de datos de Android

Qué tal, les cuento que ahora que estuve realizando el tutorial de udacity, me atoré con un problema de llaves primarias, según el tutorial que seguí de la BD, se recomendaba poner la llave primaria en autoincrementar, y como ya saben que me gusta llevarle la contra a todo, yo hice mi tabla sin el autoincremento, simplemente agregando filas sin el id a ver qué pasaba.

Por alguna razón insensata de mi parte, supuse que los registros empezaban de 0, y cuando hacía querys para ver mi información pues me tiraba errores, sin embargo la consola marcaba que era la tabla la que no existía y no el registro, así que me pasé algunas horas peleando con por qué no aparecía la tabla si yo la creaba como debía.

Para no hacer el cuento largo, android usa bases de datos sqlite, por lo que para hacer pruebas me bajé el sqlite3 de acá.

http://sqlite.org/2015/sqlite-shell-win32-x86-3081002.zip

En esta aplicación basta con utilizar el comando .schema para ver la sentencia SQL con la que se han creado las tablas de nuestra base, sin embargo, si intentan hacer este query desde android, les va a dar error, el query respectivo para lograr esto es:

  1. String queryschema = "SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE type!='meta' ORDER BY tbl_name, type DESC, name";
  2. Cursor cursor = db.rawQuery(queryschema , null);




Con este query simplemente tendrán que utilizar el método de rawquery y listo, tendrán la estructura de las tablas de su BD.

Hay que recordar que la trabla de sqlite_master contiene toda la información de nuestra BD, por lo que podemos obtener otro tipo de información aparte de las tablas.

Saludos.

No hay comentarios:

Publicar un comentario