【问题标题】:Working with Dates and Querys使用日期和查询
【发布时间】:2018-07-10 10:17:01
【问题描述】:

我是 Android 编程新手,正在开发第一个小型应用程序。

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

我的困难在于通过查询获取数据。

有人可以帮我设置一个查询,检查我的数据库中是否已经存在某个日期,以及在数据库中添加新条目或更新现有条目吗?我还阅读了有关 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();
}

【问题讨论】:

    标签: android sqlite date android-sqlite


    【解决方案1】:

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

    // 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多