Problema con SQL Query Android Where Clause

Tengo el código siguiente que crea mi tabla. Inserto datos en él que se parece a esto

_id date recordName total -------------------------------------- 7 2011 TestMaxRecord 5 

Código Java:

 public static final String KEY_ROWID = "_id"; public static final String KEY_DATE = "date"; public static final String KEY_TOTAL = "total"; public static final String KEY_RECORD_NAME = "recordName"; private static final String DATABASE_CREATE_RECORDS = "create table " + DATABASE_TABLE_RECORDS + " (" + KEY_ROWID + " integer primary key autoincrement, " + KEY_DATE + " text not null, " + KEY_RECORD_NAME + " text not null, " + KEY_TOTAL + " text not null);"; public Cursor getRecord(String name) throws SQLException { return mDb.query(true, DATABASE_TABLE_RECORDS, new String[] {KEY_ROWID, KEY_DATE, KEY_RECORD_NAME, KEY_TOTAL}, KEY_RECORD_NAME + " = " + name, null, null, null, null, null); } 

Se lanza una excepción cada vez que name = "TestMaxRecord" (a pesar de que hay datos allí) con el siguiente error

Android.database.sqlite.SQLiteException: no hay tal columna: TestMaxRecord:, mientras compila: SELECT DISTINCT _id, date, recordName, total FROM Records WHERE recordName = TestMaxRecord

Lo que me parece que está buscando un título de columna TestMaxRecord . Soy un novato androide pero copiado esta porción casi mucho exactamente de un ejemplo (estaba utilizando int sin embargo). ¿Hay alguna diferencia entre usar int y cadenas en su consulta?

Es necesario poner comillas simples alrededor del valor, de lo contrario lo tratará como una columna.

 KEY_RECORD_NAME + " = '" + name + "'" 

Nota: Esta solución está abierta a Sql Injection, debe usar marcadores de posición de parámetros y pasar los valores a través del argumento selectionArgs :

 public Cursor getRecord(String name) throws SQLException { return mDb.query(true, DATABASE_TABLE_RECORDS, new String[] {KEY_ROWID, KEY_DATE, KEY_RECORD_NAME, KEY_TOTAL}, KEY_RECORD_NAME + " = ?", new String[] {name}, null, null, null, null); } 

Otra SQLiteQueryBuilder consultar SQLiteQueryBuilder

  • copia sqlite db al dispositivo android falla
  • Consultando y trabajando con Cursores en SQLite en Android
  • Android ExpandableListView y base de datos SQLite
  • Almacenamiento en caché de datos para aplicaciones móviles de iOS / Android para trabajar con Pagination
  • Compartir base de datos SQLite entre 2 aplicaciones de Android?
  • Datetime ('ahora') da tiempo equivocado
  • SQLite para la vista de tabla personalizada de Android (vista de SQL, no vista de Android) discrepancia?
  • SherlockFragmentActivity con múltiples ListFragments y batallas con cursor SQLite
  • Cambiar la profundidad de bits de Bitmap
  • SQLite selecciona todos los registros de hoy y día anterior
  • Navegar por la base de datos SQLite desde Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.