DB Query, danach Cursor auslesen

J

Jamezx

Neues Mitglied
0
Moin Zusammen,

hänge zurzeit ein wenig. Möchte zuerst nach einer Zeile mit Hilfe der RowId suchen:

Code:
public Cursor getRow(long rowId) {
        String where = KEY_ROWID + "=" + rowId;
        Cursor c =     db.query(true, DATABASE_TABLE, ALL_KEYS, 
                        where, null, null, null, null, null);
        if (c != null) {
            c.moveToFirst();
        }
        return c;
    }

Das funktioniert auch soweit, wenn ich dann z.B. mit
Cursor cursor = myDb.getRow(newId);

einen Cursor zuteile. Möchte ich jetzt aber nur einen Namen suchen ( Programm oben etwas abgewandelt)

Code:
public Cursor [COLOR=Red]getRowabgewandelt[/COLOR](String user) {
            String where = [COLOR=Red]KEY_NAME[/COLOR] + "=" + user;
            Cursor c =     db.query(false, DATABASE_TABLE, ALL_KEYS, 
                            where, null, null, null, null, null);
            if (c != null) {
                c.moveToFirst();
            }
            return c;
        }

Kann ich nicht mehr mit Cursor cursor2 = myDb.getRownabgewandelt(username);
arbeiten ?!


Der Username wird mit einem String an die Funktion weitergegeben, das Program stürzt allerdings sofort ab, sobald es die Zeile myDb.getRowabe.... erreicht.

Jemand ne Idee woran es liegen könnte ?


Des Weiteren würde ich gerne wissen, ob der Cursor bei der Suche etwas gefunden hat, oder ob er leer geblieben ist.



Grüße und vielen Dank


Jamezx
 
Hmm, vielleicht Umlaute im String? Das kann manchmal ganz schön Ärger bereiten^^ Was sagt den Logcat? Wie bindest du die DB ein. Bist du sicher, dass du eine Sqlite-DB hast und keine "normale"?

cursor.getCount() gibt dir Auskunft über die Funde.
 
Der erste Quellcode funktioniert ja, ist eine SQLite DB (also die, die bei Android dabei ist)

Mit dem ersten Code kann ich per ID suchen

Nur der zweite Quellcode funktioniert nicht. LogCat sagt komischerweise gar nichts O_o
 
Wenn du nach einem String suchst, dann muss man "einfache Anführungsstriche" verwenden. Also sowas hier --> '
Versuche es mit:
Code:
public Cursor getRowabgewandelt(String user) {
            String where = KEY_NAME + "='" + user + "'";
            Cursor c =     db.query(false, DATABASE_TABLE, ALL_KEYS, 
                            where, null, null, null, null, null);
            if (c != null) {
                c.moveToFirst();
            }
            return c;
        }

Jamezx schrieb:
Des Weiteren würde ich gerne wissen, ob der Cursor bei der Suche etwas gefunden hat, oder ob er leer geblieben ist.

moveToFirst gibt "true" zurück, wenn es funktioniert. Somit wäre das besser:

Code:
public Cursor getRowabgewandelt(String user) {
            String where = KEY_NAME + "='" + user + "'";
            Cursor c =     db.query(false, DATABASE_TABLE, ALL_KEYS, 
                            where, null, null, null, null, null);
            if (c.moveToFirst()) {
                return c;
            }
                return null;
        }
 
Supi, teste es gleich mal und gebe dann Rückmeldung :)


EDIT:


Super, funktioniert einwandfrei :)

Vielen Dank
 
Zuletzt bearbeitet:

Ähnliche Themen

H
Antworten
2
Aufrufe
1.311
Hcman
H
M
  • maksimilian
Antworten
8
Aufrufe
1.269
jogimuc
J
S
Antworten
8
Aufrufe
2.019
stikker
S
Zurück
Oben Unten