Comunidad de diseño web y desarrollo en internet online

[AIR] ¿SQLStatement acepta array como parámetro?

Citar            
MensajeEscrito el 04 Mar 2011 01:13 pm
Hola,
estoy intentando hacer una consulta a una db local SQLite en una aplicación AIR, donde tengo que buscar los caracteres que componen una palabra determinada dentro de una tabla.
Para ello estoy intentado usar la cláusula SQL "IN", a la que le paso un array como parámetro, pero la consulta no me devuelve ningún resultado. ¿Cómo puedo pasar este array a la consulta?
Esta es la definición que tengo del SQLStatement:

Código ActionScript :

charsArrayStatement = new SQLStatement();
charsArrayStatement.sqlConnection = sqlConnection;
charsArrayStatement.text = "SELECT * FROM characters WHERE character IN(:characterArray)";
charsArrayStatement.addEventListener(SQLErrorEvent.ERROR, statementErrorHandler);
charsArrayStatement.addEventListener(SQLEvent.RESULT, selectCharArrayHandler);

Y para ejecutar la consulta:

Código ActionScript :

var s:String = "hola";
charsArrayStatement.parameters[":characterArray"] = s.split("");
charsArrayStatement.execute();

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Mar 2011 05:41 pm
No lo tengo en SQLLite, pero usualmente dentro del IN(xx,xx,xx,xx) pones una lista de elementos separados por comas, entonces yo haría algo así

charsArrayStatement.text = "SELECT * FROM characters WHERE character IN("+s.split("").toString()+")";

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Mar 2011 09:17 pm
Muchas gracias,
redefiniendo el text funciona perfectamente, aunque falta poner cada parámetro del IN entre comillas:

"\"" + s.split("").join("\", \"") + "\"";

Por curiosidad, ¿sabes si hay alguna diferencia entre redefinir el text del Statement en cada consulta o sustituir los parámetros con la propiedad parameters (aparte de lo de evitar la inyección, que no me preocupa ya que la bd se abre sólo en modo lectura)?

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.