Sqlite LIKE problema en android

Hola, he pasado casi 2 horas tratando de averiguar por qué la sentencia LIKE no funciona y sólo obtener este error: 03-03 11:31:01.770: ERROR/AndroidRuntime(11767): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x89d9f8

En SQLiteManager funciona perfectamente así: SELECT Word FROM Sign WHERE Word LIKE 'he%'; Pero cuando intento hacerlo desde Java, no funcionará. Aquí está mi consulta, he intentado de muchas maneras sin suerte:

 Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word"+" LIKE '"+" ?"+"%'", new String[]{name}, null, null, null); 

¿Algunas ideas? Estoy haciendo mal o hay un error?

Gracias por tu tiempo.

Creo que no deberías usar selArgs para LIKE de esa manera. Usted puede intentar esto:

 Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word"+" LIKE '"+name+"%'", null, null, null, null); 

EDITAR:

Aceptar, si desea estar a salvo de las inyecciones SQL, no utilice la solución anterior, utilice esto:

 Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word LIKE '?'", new String[]{name+"%"}, null, null, null); 

La solución es realmente muy fácil. Solo incluye el% dentro de tu selecciónArgs.

 String []selectionArgs = {name + "%"}); 

Así es como lo hice:

 String []columns = {"_id", "name"}; String []selectionArgs = {name+"%"}; db.query(true,"mydb",columns,"name LIKE ?",selectionArgs,null,null,null); 

Otra solución – quizás más limpia – es usar el || Como se describe aquí: Sqlite vinculación dentro de cadena literal

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.