2016-07-12 11 views
0

Irgendwie werden die Fragezeichen in der Abfrage nicht ersetzt und ich kann nicht herausfinden, warum.
ich bekomme immer die Abfrage (sah in während des Debuggens):Android SQL Query() ersetzt kein Fragezeichen

SELECT Nachricht, Zeitstempel

VON chatMessage

WHERE chatId =?

ORDER BY Zeitstempel ASC

LIMIT 5

in dem folgenden Code:

public ArrayList<String> queryLastMessages(String chatId, int count){ 
    SQLiteDatabase db = new DatabaseHelper(context).getReadableDatabase(); 

    String[] columns = { 
      COLUMN_NAME_CHAT_MESSAGE, 
      COLUMN_NAME_TIMESTAMP 
    }; 

    String selection = COLUMN_NAME_CHAT_ID + " = ?"; 

    String[] selectionArgs = { 
      chatId 
    }; 

    // ToDo: Ascending or Descending? 
    Cursor cursor = db.query(
      TABLE_CHAT_MESSAGE, 
      columns, 
      selection, 
      selectionArgs, 
      null, 
      null, 
      COLUMN_NAME_TIMESTAMP + " ASC", 
      String.valueOf(count)); 

    cursor.moveToFirst(); 

    ArrayList<String> arrayList = new ArrayList<>(); 
    if(cursor.getCount() != 0){ 
    while(!cursor.isAfterLast()){ 
     arrayList.add(cursor.getString(0)); 
     cursor.moveToNext(); 
    } 
    } 

    return arrayList; 
} 

Irgendwelche Ideen, was ich falsch gemacht habe? Danke für Ihre Hilfe.

Ray

+2

* irgendwie die Fragen in der Abfrage markieren sind * nicht ersetzt ??? es wird nie ersetzt ... so funktioniert die Parameterbindung ... – Selvin

+1

Funktioniert die Abfrage *? –

+0

@Selvin: Danke für Ihren Hinweis. Aus diesem Grund fand ich das eigentliche Problem: D => Parameter chatId war falsch – Ayox

Antwort

0

Versuchen Sie dieses:

SQLiteStatement stmt = db.compileStatement(query); 
stmt.bindString(1, stringYouWantToReplaceQuestionMark); 
stmt.execute(); 
+0

kein Grund, warum es anders funktionieren sollte – njzk2