使用日期和查询

时间:2018-01-31 10:27:46

标签: android sqlite date android-sqlite

我是Android编程的新手,并且正在使用第一个小型App。

我实现了一个包含3列(KEY_IDKEY_DATUMKEY_ANZAHL)的SQLite数据库,其中Date Column是格式为YYYY-MM-DD的字符串。

我努力解决的问题是使用查询获取数据。

有人可以帮我设置一个Query,它会检查我的数据库中是否已经有某个Date,以及在DB中添加新条目还是更新现有条目?我还读到了strftime()函数,但我不知道我的代码在哪里使用它...

我试过这个,但它没有做任何事情

void addBiereintrag(Biereintrag biereintrag) {

    // Get writable Access
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();

    // With this query im trying to find out if the Date given by biereintrag is already in the Database
    Cursor cursor = db.query(TABLE_BIER, new String[]{KEY_DATUM}, KEY_DATUM + "=?",
            new String[]{biereintrag.getDatum()}, null, null,
            null, null);
    cursor.moveToFirst();

    // if cursor == null, there is no entry for the Date, and the i put a new Entry
    if (cursor == null) {
        Log.d("test", "cursor ist null");
        values.put(KEY_DATUM, biereintrag.getDatum()); // Datum aus get.Datum() holen
        values.put(KEY_ANZAHL, biereintrag.getAnzahl()); // Anzahl zum Datum holen

        // close DB connection
        db.close();
    } else {
        values.put(KEY_DATUM, biereintrag.getDatum()); // Datum aus get.Datum() holen

        // If there is already a Entry, then Add the value of biereintrag.getAnzahl() to the Value written in the cursor
        values.put(KEY_ANZAHL, biereintrag.getAnzahl() + cursor.getInt(cursor.getColumnIndex("KEY_ANZAHL")));
        // close DB connection
        db.close();
    }
    cursor.close();
}

1 个答案:

答案 0 :(得分:0)

您需要在values之后将values.put()更新/插入数据库,以便对数据库进行更改:

// if cursor == null, there is no entry for the Date, and the i put a new Entry
if (cursor == null) {
    Log.d("test", "cursor ist null");
    values.put(KEY_DATUM, biereintrag.getDatum()); // Datum aus get.Datum() holen
    values.put(KEY_ANZAHL, biereintrag.getAnzahl()); // Anzahl zum Datum holen

    // insert values into database
    database.insert(TABLE_BIER, null, values);

    // close DB connection
    db.close();
} else {

    // If there is already a Entry, then Add the value of biereintrag.getAnzahl() to the Value written in the cursor
    values.put(KEY_ANZAHL, biereintrag.getAnzahl() + cursor.getInt(cursor.getColumnIndex("KEY_ANZAHL")));

    //update database with new value
    database.update(TABLE_BIER, values, KEY_DATUM + " = ?",
                new String[]{ biereintrag.getDatum()});

    // close DB connection
    db.close();
}