Sqlite DB Query auf null checken..!

B

BFK

Fortgeschrittenes Mitglied
11
Hallo Forum,
ich experementiere grade mit sqlite und Android.
Bin leider auf ein sehr merkwürdiges prob gestossen. Und zwar habe ich folgendes Query in meiner DB-Klasse..:
Code:
public Cursor selectFromCoordinates(String track_name)
    {
        Cursor cr = db.rawQuery("SELECT coordinates.trackID as _id, dateTime, latitude, longitude, height, speed FROM "+
                "coordinates, tracks WHERE tracks.trackID = coordinates.trackID AND name = ?"
                , new String[]{track_name});
  
        return cr;        
    }
Mit diesem Querry bekomme ich alle Infos vom Table "coordinates" die ein track_name, der geich X ist. Dieser Querry funktioniert einwandfrei und ich bekomme alle erwatende einträge zurück.

Jetzt will ich aber checken, ob der Cursor gar keine werte zurückgibt, also in dem fall dass es keine einträge gibt.
Das mache ich so..:

Code:
Db.open();
        Cursor cur = Db.selectFromCoordinates(track_name);
        Db.close();

if(cur.getCount() == 0)
        {
             // Keine Einträge gefunden
        }
else
        {
            // ...
        }
Leider bekomme ich immer von "cur.getCount()" den Wert 0, egal ob es Einträge gibt oder nicht.
Wieso..?

-MFG BFK-
 
BFK schrieb:
Hallo Forum,
ich experementiere grade mit sqlite und Android.
Bin leider auf ein sehr merkwürdiges prob gestossen. Und zwar habe ich folgendes Query in meiner DB-Klasse..:
Code:
public Cursor selectFromCoordinates(String track_name)
    {
        Cursor cr = db.rawQuery("SELECT coordinates.trackID as _id, dateTime, latitude, longitude, height, speed FROM "+
                "coordinates, tracks WHERE tracks.trackID = coordinates.trackID AND name = ?"
                , new String[]{track_name});
  
        return cr;        
    }
Mit diesem Querry bekomme ich alle Infos vom Table "coordinates" die ein track_name, der geich X ist. Dieser Querry funktioniert einwandfrei und ich bekomme alle erwatende einträge zurück.

Jetzt will ich aber checken, ob der Cursor gar keine werte zurückgibt, also in dem fall dass es keine einträge gibt.
Das mache ich so..:

Code:
Db.open();
        Cursor cur = Db.selectFromCoordinates(track_name);
        Db.close();

if(cur.getCount() == 0)
        {
             // Keine Einträge gefunden
        }
else
        {
            // ...
        }
Leider bekomme ich immer von "cur.getCount()" den Wert 0, egal ob es Einträge gibt oder nicht.
Wieso..?

-MFG BFK-
Schuss ins Blaue, da ich ja nicht weiß, was Db.open() / Db.close() macht: schon mal probiert, Db.close() hinter cur.getCount() zu verschieben?
 
  • Danke
Reaktionen: BFK
maniac103 schrieb:
Schuss ins Blaue, da ich ja nicht weiß, was Db.open() / Db.close() macht: schon mal probiert, Db.close() hinter cur.getCount() zu verschieben?

Naja "Db.open();" ist
Code:
db = DBHelper.getWritableDatabase();
und "Db.close();"
Code:
DBHelper.close();
Und ja du hast recht, war dumm den DBhelper davor zu schliessen.

So funkt es einwandfrei..!
Code:
Db.open();
        Cursor cur = Db.selectFromCoordinates(track_name);
        int curs = cur.getCount();
        Db.close();
        
        
        if(curs == 0){ // keine einträge }
        else{ //.. }
Und DANKE dir für deinen schnellen Beitrag..!
 

Ähnliche Themen

R
Antworten
6
Aufrufe
997
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
118
swa00
swa00
Zurück
Oben Unten