Citas de Android dentro de una cadena de consulta SQL

Quiero realizar una consulta como la siguiente:

uvalue = EditText( some user value ); p_query = "select * from mytable where name_field = '" + uvalue + "'" ; mDb.rawQuery( p_query, null ); 

Si el usuario introduce una única cotización en su entrada, se bloquea. Si lo cambia a:

 p_query = "select * from mytable where name_field = \"" + uvalue + "\"" ; 

Se bloquea si el usuario introduce una comilla doble en su entrada. Y por supuesto siempre podían introducir las comillas simples y dobles.

Usted debe hacer uso de la selectionArgs de método [ rawQuery ] ( http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery(java.lang.String , java.lang.String []) selectionArgs parámetro:

 p_query = "select * from mytable where name_field = ?"; mDb.rawQuery(p_query, new String[] { uvalue }); 

Esto no sólo resuelve el problema de cotizaciones, sino que también mitiga la SQL Injection .

DatabaseUtils.sqlEscapeString funcionó correctamente para mí. La cadena se incluye entre comillas simples y las comillas simples dentro de la cadena se convierten en comillas dobles. Intentado usar selectionArgs en el getContentResolver (). Query () pero no trabajó en absoluto.

¿Ha intentado reemplazar una única comisión con 2 comillas simples? Eso funciona para ingresar datos a una base de datos.

Prefiero escapar Cotizaciones simples y comillas dobles en cada instrucción de inserto con Sqlite como esto:

  String sqlite_stament = sqlite_stament.replace("'", "''").replace("\"", "\"\""); 

Deberías cambiar

 p_query = "select * from mytable where name_field = '" + uvalue + "'" ; 

me gusta

 p_query = "select * from mytable where name_field = '" + android.database.DatabaseUtils.sqlEscapeString(uvalue)+ "'" ; 

Tengo el mismo problema pero ahora se resuelve apenas escribiendo el código como en su caso usted desea insertar valor uvalue. Entonces escriba como

 uvalue= EditText( some user value ); uvalue = uvalue.replaceAll("'", "''"); p_query = "select * from mytable where name_field = '" + uvalue + "'" ; mDb.rawQuery( p_query, null ); 

guay..!!

  • Consulta SQLite: Seleccione la consulta con la cláusula BETWEEN
  • Longitud máxima de Android Sqlite String?
  • Error al leer la fila 0, columna 0 de una CursorWindow que tiene 0 filas, 64 columnas
  • Cómo contar la fila de una tabla de base de datos sqlite android
  • Android Sqlite IN, sin sintaxis
  • Lectura de transacciones no confirmadas en Android
  • SQLiteConstraintException no ir dentro de la captura
  • ¿Cómo descargar una base de datos SQLite desde un dispositivo Android?
  • Obtener información de la base de datos sqlite
  • Obteniendo la última fila de la base de datos sqlite
  • La base de datos SQLite ..onCreate () no se está llamando
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.