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 ingresa una sola cotización en su entrada, se bloquea. Si lo cambias a:

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

se bloquea si el usuario ingresa una comilla doble en su entrada. y, por supuesto, siempre podían ingresar tanto comillas simples como dobles.

Debe utilizar el parámetro selectionArgs del método rawQuery :

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

Esto no solo resuelve el problema de las cotizaciones, sino que también mitiga la SQL Injection .

DatabaseUtils.sqlEscapeString funcionó correctamente para mí. La cadena está encerrada por comillas simples y las comillas simples dentro de la cadena se convierten en comillas dobles. Intenté usar selectionArgs en la consulta getContentResolver (). () Pero no funcionó en absoluto.

¿Has intentado reemplazar una cita simple con 2 comillas simples? Eso funciona para ingresar datos en una base de datos.

Debes 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 soluciona con solo escribir el código, como en el caso en que desea insertar el valor uvalue. Luego, 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..!!

Prefiero escapar de comillas simples y comillas dobles en cada instrucción de inserción con Sqlite de esta manera:

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