¿Cómo pasar el valor de la cadena separada por coma en la consulta SQL?

Creo una aplicación relacionada con la base de datos.

En esto creo la base de datos simple y consigo el valor de la base de datos usando adentro en consulta del sql.

Mi problema es que tengo la cuerda en un "2,6,8,9,10" esto. Primero divido esta cadena y la almacén en un arraylist. Sin coma. Después de este arraylist me fusiono con coma como un 2,6,8,9,10 este.

Hago todo esto muy bien. Yo uso esta cadena en la consulta para obtener el valor de la base de datos. Mi consulta es

SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td WHERE td.topic_id =tm.topic_id AND td.langid='3' AND tm.oraganisationid ='1' AND td.topic_id in(2,6,8,9,10); 

esta.

Pero cuando paso la cadena de la mezcla él `s parece un

 SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td WHERE td.topic_id =tm.topic_id AND td.langid='3' AND tm.oraganisationid ='1' AND td.topic_id in('2,6,8,9,10'); 

Así que no puedo funcionar la pregunta porque el diferente del valor del paso adentro in causa. En la consulta anterior funciona bien porque s like a in (2,6,8,9,10) in second it look like a in ('2,6,8,9,10') so what to do. how to remove this so what to do. how to remove this “ de cadena?

Primero divido la cadena

 //getTopicFile ArrayList with public ArrayList<String> getAssignTopicArrayList(String passString) { ArrayList<String> rtnArrayList=new ArrayList<String>(); try { StringTokenizer strTokens = new StringTokenizer(passString,","); while (strTokens.hasMoreElements()) { rtnArrayList.add(String.valueOf(strTokens.nextToken())); } } catch (Exception ex) { ex.printStackTrace(); System.err.println("Error in Fetch ArrayList-->"+ex.toString()); } return rtnArrayList; } //getTopicFile ArrayList with 

Después de fusionar en Nueva cadena

 genHelper.showErrorLog("Assign Topic-->"+chapterAssignTopicName); ArrayList<String> getTopicList=genHelper.getAssignTopicArrayList(chapterAssignTopicName); String passConcat = ""; for (int i = 0; i < getTopicList.size(); i++) { System.out.println("Topic List--->"+getTopicList.get(i)); if(getTopicList.size()==1) { passConcat=passConcat.concat(String.valueOf(getTopicList.get(i))); } else { if(getTopicList.size()-1 == i) { System.err.println("value if --> " + i); passConcat=passConcat.concat(String.valueOf(getTopicList.get(i))); }else { System.err.println("value else--> " + i); passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)).concat(",")); } } } genHelper.showErrorLog("PassConcat String-->"+passConcat); 

Entonces me dieron Nueva cadena y pasar en la consulta a continuación

 String topicQuery="SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td WHERE td.topic_id =tm.topic_id AND td.langid='"+LanguageActivity.languageId+"' AND tm.oraganisationid ='"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"' AND td.topic_id in('"+passConcat+"')"; 

no debería

 String topicQuery="SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td WHERE td.topic_id =tm.topic_id AND td.langid='"+LanguageActivity.languageId+"' AND tm.oraganisationid ='"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"' AND td.topic_id in('"+passConcat+"')"; 

ser

 String topicQuery="SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm ,topicmaster_description td WHERE td.topic_id =tm.topic_id AND td.langid='"+LanguageActivity.languageId+"' AND tm.oraganisationid ='"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"' AND td.topic_id in("+passConcat+")"; 

La mejor opción, asumiendo que está utilizando sentencias preparadas, y desea mantener su db seguro, es preparar la sentencia con la cadena sql '…. in (?,?,?, …)' donde el número De '?' Es igual al número de valores reales que tiene en su matriz.

La desventaja es que usted sacrifica el funcionamiento, porque usted necesita preparar la declaración cada vez que usted desea ejecutarla.

Utilice algunas operaciones de picadura como indexOf y reemplace las funciones para deshacerse de estas comas.

  • ¿Cuál es la mejor manera en Android para eliminar todas las filas de una tabla
  • ¿Cómo puedo copia de seguridad de archivos sqlite en tarjeta SD mediante programación?
  • INSERT de SQLite de SQL
  • SQLite Android asignación de la ventana de cursor de 2048 kb falló
  • Cómo deshabilitar el botón Borrar datos en Información de aplicación de la aplicación Administrar
  • Android piensa que no estoy cerrando mi base de datos! ¿Por qué?
  • Cambiar un valor en una columna en sqlite
  • No se pudo asignar CursorWindow
  • ¿Qué diferencia hay entre SQLite y SQL?
  • Android NDK construir de spatialite?
  • Cómo puedo limitar el número de filas en la tabla SQLite de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.