una - select sqlite android studio
Citas de Android dentro de una cadena de consulta sql (6)
¿Has intentado reemplazar una cita simple con 2 comillas simples? Eso funciona para ingresar datos en una base de datos.
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.
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.
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
.
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)+ "''" ;
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("/"", "/"/"");
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..!!