Cursor.getCount() ist immer 0

  • Antworten:2
  • Bentwortet
mybecks
  • Forum-Beiträge: 27

27.01.2011, 15:24:13 via Website

Hallo zusammen,

Ich beschäftige mich gerade mit dem Thema SQLite + Android. Nun returned mir der Cursor immer 0, obwohl ich 100+ Einträge in der DB habe ...

Ich verwende einen DBHelper in dem ein Singelton vorhanden ist. So kann ich ja ein und dieselbe Instanz der DB auf meinen x Activitys verwenden.

In einer Helper Klasse sollen nun die Daten welche per WS kommen persistiert werden.
Dazu hab ich folgenden Aufruf:
1private DataBaseHelper dbHelper;
2 private SQLiteDatabase db;
3
4public WSCalls(Context context){
5 this.context = context;
6 dbHelper = DataBaseHelper.getInstance(context);
7
8 try{
9 db = dbHelper.getWritableDatabase();
10 Log.i(TAG, "DB successful opened (writable)");
11 }catch(SQLException ex){
12 throw ex;
13 }
14 }

Nun hab ich 2 Methoden, die eine Prüft ob schon bereits die aktuelle Kategorie in der DB vorhanden ist. Die andere ob bereits das aktuelle Magazin persistiert ist.

1private boolean checkCategory(String catid){
2
3 Cursor c = db.query(DB_TABLE_NAME, new String[]{DB_COLUMN_CATID}, DB_COLUMN_CATID+"="+catid, null, null, null, null);
4
5 int rows = c.getCount();
6 Log.i(TAG, rows+"");
7 c.close();
8 if(rows!=0){
9 Log.i(TAG, "Category already exists");
10 return true;
11 }else{
12 Log.i(TAG, "Category don't exists");
13 return false;
14 }
15
16 }

1private boolean checkMagazine(Magazine magazine){
2 db = dbHelper.getReadableDatabase();
3 if(magazine.getNumber().length() <= 0 && magazine.getYear().length()<=0){
4 return false;
5 }
6
7
8 String select = "SELECT "+DB_COLUMN_EBINR+","+DB_COLUMN_NUMBER+","+DB_COLUMN_YEAR+
9 " FROM "+DB_TABLE_NAME+
10 " WHERE "+DB_COLUMN_EBINR+" = "+magazine.getEbinr()+
11 " AND "+DB_COLUMN_NUMBER+" = "+magazine.getNumber()+
12 " AND "+DB_COLUMN_YEAR+" = "+magazine.getYear();
13 //+
14// ";";
15
16// Cursor c = db.query(DB_TABLE_NAME, new String[]{DB_COLUMN_EBINR, DB_COLUMN_NUMBER, DB_COLUMN_YEAR}, DB_COLUMN_EBINR+"="+magazine.getEbinr(), null, null, null, null);
17
18 Cursor c = db.rawQuery(select, null);
19
20 int rows = c.getCount();
21 c.close();
22 if(rows != 0){
23 Log.i(TAG, "no new issue");
24 return true;
25 }else{
26 Log.i(TAG, "new issue");
27 return false;
28 }
29 }

Weder db.rawQuery(...) oder db.query(...) liefern irgend was anderes als 0 zurück, obwohl in der DB 113 Einträge dazu vorhanden sind.

Da ich mittlerweile recht verzweifelt bin, dachte ich ich wend mich mal an euch.

Vielen Dank im Vorraus & Grüße,
mybecks

Antworten
Gelöschter Account
  • Forum-Beiträge: 107

27.01.2011, 16:07:47 via Website

Entferne mal die Whitespaces vor und nach dem '=' und leg die Werte in einfache Ticks.

1String select = "SELECT "+DB_COLUMN_EBINR+","+DB_COLUMN_NUMBER+","+DB_COLUMN_YEAR+
2" FROM " + DB_TABLE_NAME +
3" WHERE " + DB_COLUMN_EBINR + "='" + magazine.getEbinr() + "'" +
4" AND " + DB_COLUMN_NUMBER + "='" + magazine.getNumber() + "'" +
5" AND " + DB_COLUMN_YEAR + "='" + magazine.getYear() + "'";

Seid nett zueinander: AndroidPIT-Regeln ;)

Antworten
mybecks
  • Forum-Beiträge: 27

01.02.2011, 14:32:48 via Website

Sorry das ich erst so spät antworte.

Funktioniert einwandfrei.

Vielen Dank.
Gruß, mybecks

Antworten