2010-12-29 14 views
27

La tabla de la base de datos SQLite que estoy usando está sujeta a la adición de columnas cuando sea necesario. No quiero codificar las columnas con el riesgo de actualizar la base de datos y olvidarme de actualizar los valores codificados. ¿Cómo podría devolver todos los nombres de las columnas en una tabla? (Preferiblemente en un String[])Devuelve todas las columnas de una tabla SQLite en Android

Respuesta

43

mejor si se utiliza un método de consulta SQLiteDatabase ejemplo y el uso

SQLiteDatabase mDataBase; 
(some code here...) 
mDataBase = getReadableDatabase(); 
Cursor dbCursor = mDataBase.query(TABLE_NAME, null, null, null, null, null, null); 
String[] columnNames = dbCursor.getColumnNames(); 

columnNames deben tener los nombres de columna

+1

y por favor dígame cómo obtener valor de una columna en particular? – Apurva

+0

Cursor dbCursor = mDataBase.query (TABLE_NAME, new String [] {YOUR_COLUMN_NAME_1, YOUR_COLUMN_NAME_2, ....}, null, null, null, null, null); –

+0

¿Qué es getReadableDatabase? –

6

Es posible que no necesite una lista de nombres de columna.

Parece que desea la lista de nombres de columnas para que pueda crear una lista de columnas separadas por comas para seleccionar. Si este es el caso, entonces donde normalmente se coloca la lista de nombres de columna en su consulta SELECT, en su lugar podría utilizar un asterisco:

SELECT * FROM table WHERE ... 

o si la tabla es alias:

SELECT t.* FROM table AS t ... 

Un asterisco significa "todas las columnas".

EDIT: Si realmente desea una lista de nombres de columna de una tabla, a continuación, puede utilizar el siguiente código:

Cursor c = db.rawQuery("SELECT * FROM table WHERE 0", null); 
try { 
    String[] columnNames = c.columnNames(); 
} finally { 
    c.close(); 
} 

Tenga en cuenta que no se debe modificar la matriz devuelta de cadenas en cualquier manera: https://code.google.com/p/android/issues/detail?id=3731

+0

¿Por qué se usa 'WHERE 0'? ¿No podemos prescindir? : O –

4

También es interesante observar que el método de consulta acepta nula como entrada para los parámetros de la columna. Si ingresa nulo, se devolverán todas las columnas.

db.query("Table_name",null,COLUMN_ID + "=" + id,null,null,null,null); 

Devolverá todas las columnas de la línea que tenga el ID especificado.

Aquí puede ver la definición del método.

+0

De 'if (columns! = Null && columns.length! = 0) { appendColumns (consulta, columnas); } else { query.append ("*"); } ' – Renatinn

Cuestiones relacionadas