Kann mir jemanden helfen?
Die Methode getMonthlyCounter mit der SQL Abfrage funktioniert nicht und gibt immer 0 zurück.
Die Abfrage für getDailyCounter funktioniert.
Debuggen zeigt aber, dass der cursor etwas ausliest aber anscheinend immer 0 obwohl in der Datenbank unter dem Monat Oktober mehrere Einträge vorhanden sind. Hat jemand einen Tipp wo der Fehler liegen könnte? ( IDE Android Studio )
Die Methode getMonthlyCounter mit der SQL Abfrage funktioniert nicht und gibt immer 0 zurück.
Die Abfrage für getDailyCounter funktioniert.
Debuggen zeigt aber, dass der cursor etwas ausliest aber anscheinend immer 0 obwohl in der Datenbank unter dem Monat Oktober mehrere Einträge vorhanden sind. Hat jemand einen Tipp wo der Fehler liegen könnte? ( IDE Android Studio )
Java:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "counter_db";
private static final String TABLE_NAME = "counters";
private static final String COL_DATE = "date";
private static final String COL_DAILY_COUNTER = "daily_counter";
private SQLiteDatabase db;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COL_DATE + " TEXT PRIMARY KEY," + COL_DAILY_COUNTER + " INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public int getDailyCounter() {
String currentDate = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()).format(new Date());
Cursor cursor = db.rawQuery("SELECT " + COL_DAILY_COUNTER + " FROM " + TABLE_NAME + " WHERE " + COL_DATE + "=?", new String[]{currentDate});
if (cursor.moveToFirst()) {
return cursor.getInt(cursor.getColumnIndex(COL_DAILY_COUNTER));
} else {
return 0;
}
}
public int getMonthlyCounter() {
String currentMonth = new SimpleDateFormat("yyyyMM", Locale.getDefault()).format(new Date());
String query = "SELECT SUM(" + COL_DAILY_COUNTER + ") AS MonthlyCounter FROM " + TABLE_NAME + " WHERE strftime('%Y%m', " + COL_DATE + ") = ?";
Cursor cursor = db.rawQuery(query, new String[]{currentMonth});
if (cursor.moveToFirst()) {
return cursor.getInt(cursor.getColumnIndex("MonthlyCounter"));
} else {
return 0;
}