2011-06-19 11 views
8

¿Hay una manera nativa de escapar cadenas para Ormlite para Android?Método de cadena de escape Ormlite?

Por ejemplo, si deseo suministrar una cadena: func escape de ormlite, necesita ser suministrada como orkite \ 's escape func.

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats) 
    .prepare()) 

He intentado utilizar el método de escapeValue UpdateBuilder, pero que sólo tiene el siguiente cambio: 'de ormlite de escape func'. Agrega comillas simples al principio y al final de la declaración. ¿Existe un soporte nativo para escapar de cadenas para ser seguro de inyección sql?

Si no, ¿cuáles son las formas de hacerlo?

¡Gracias!

+0

Que la primera cadena en '' like() '' -Método ser una potencial falta de seguridad de inyección? – unlimited101

Respuesta

15

He intentado utilizar el método escapeValue de UpdateBuilder, pero solo hace el siguiente cambio: 'ormlite's escape func'. Agrega comillas simples al principio y al final de la declaración. ¿Existe un soporte nativo para escapar de cadenas para ser seguro de inyección sql?

Esta es una pregunta frecuente. La forma correcta de hacerlo es usar un argumento SelectArg para que el SQL pueda usar un? tipo de constructo Aquí hay otro question talking about this.

SelectArg selectArg = new SelectArg(stats); 
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare()); 

Aquí está la documentación sobre la funcionalidad de selección-arg:

http://ormlite.com/docs/select-arg

Y aquí es algunas discusiones sobre esto en la lista de usuarios ORMLite:

http://groups.google.com/group/ormlite-dev/browse_thread/thread/71d07202404f97e7

http://groups.google.com/group/ormlite-user/browse_thread/thread/7ced95c474031e3c

Editar:

Como @Moritz señala, si en realidad se está actualizando la base de datos, también puede utilizar el SelectArg con el UpdateBuilder:

SelectArg arg = new SelectArg("Some value"); 
updateBuilder.updateColumnValue(MY_COLUMN, arg); 
+0

Perfecto, funcionó. Gracias. – the5threvolution

+1

BTW esto también funciona para las declaraciones de actualización: 'SelectArg arg = new SelectArg(); arg.setValue ("Algunos valores"); updateBuilder.updateColumnValue (MY_COLUMN, arg); ' – Moritz