La declaración de selección de SQLite no funciona

He escrito un método para saber si se guardan los datos. El método debe devolver falso pero devuelve verdadero. Mis códigos están aquí;

private boolean baskaVarMi(String gelenTarih) {

    boolean sonuc = false;
    int k = 0;
    SQLiteDatabase db = dbo.getReadableDatabase();
    String sql = "select * from gunlukler where tarih='" + gelenTarih + "'";
    Cursor c = db.rawQuery(sql, null);
    if (c.moveToFirst()) {
        do {
            if (c.getString(c.getColumnIndex("tarih")) == gelenTarih) {
                k++;
            }
        } while (c.moveToNext());
    }

    if (k > 0) {
        sonuc = true;
    }else if(k == 0){
        sonuc = false;
    }

    return sonuc;
}

¿Cuál es el problema en este método?

preguntado el 11 de septiembre de 13 a las 14:09

Cuando quieras comparar cadenas, tienes que usar equals() método. Pero en su escenario no hay razón para su segunda condición eq if (c.getString(c.getColumnIndex("tarih")) == gelenTarih) No lo necesitas, pero si aún quieres usarlo, úsalo. equals() También recomiendo usar declaraciones parametrizadas y no codificadas. -

Estoy de acuerdo con Sajmon, SQLite es tan apresurado, usa declaraciones parametrizadas, -

4 Respuestas

cambia con eso:

Cursor c = db.rawQuery(sql, null);
if (c.getCount()>0) {
c.moveToFirst()
    do {
        if (c.getString(c.getColumnIndex("tarih")).equals(gelenTarih)) {
            k++;
        }
    } while (c.moveToNext());
}

Respondido el 11 de Septiembre de 13 a las 14:09

Prueba de esta manera....

Cursor cur = db.query(SQL_TABLE, new String[] { URLNAME,ID,URLVALUE }, null, null,
            null, null, null); // query..

Respondido el 11 de Septiembre de 13 a las 14:09

   c.getString(c.getColumnIndex("tarih")) == gelenTarih 

no es correcto. Ir con

   c.getString(c.getColumnIndex("tarih")).equals( gelenTarih)

Respondido el 11 de Septiembre de 13 a las 14:09

usa solo esto

private boolean baskaVarMi(String gelenTarih) {
SQLiteDatabase db = dbo.getReadableDatabase();
    String sql = "select * from gunlukler where tarih='" + gelenTarih + "'";
    Cursor c = db.rawQuery(sql, null);
    if (c.moveToFirst()) 
    {
       return true;
    }
    else
    {
        return false;
    }
}

Respondido el 11 de Septiembre de 13 a las 14:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.