简体   繁体   English

如何插入或更新数据库行的特定字段?

[英]How to insert or update a particular field of database row?

I am using a database table with my android application. 我在我的Android应用程序中使用数据库表。 What i want to do is insert a row if does not exist else update an entry in it? 我想做的是如果不存在则插入行,否则在其中更新条目? I am using the following code but found no luck. 我正在使用以下代码,但没有发现运气。

public boolean insertIntoOrder(String couponBrand, String couponTitle, String couponDenomination, int couponCount) {
        database = this.getWritableDatabase();
        ContentValues orderContentValues = new ContentValues();
        orderContentValues.put(KEY_ORDER_BRAND, couponBrand);
        orderContentValues.put(KEY_ORDER_TITLE, couponTitle);
        orderContentValues.put(KEY_ORDER_DENOMINATION, couponDenomination);
        orderContentValues.put(KEY_ORDER_COUPON_COUNT, couponCount);
        boolean responseValue = checkOrderConfirmation(couponBrand, couponTitle, couponDenomination);
        if (responseValue == true) {
            database.insert(TABLE_ORDER_CONFIRMATION, null, orderContentValues);
        }
        else {
            couponCount = couponCount++;
            database.execSQL("UPDATE " + TABLE_ORDER_CONFIRMATION + " SET " + KEY_ORDER_COUPON_COUNT + " = ? WHERE " + KEY_ORDER_BRAND + " = ? AND " + KEY_ORDER_TITLE + " = ? AND " + KEY_ORDER_DENOMINATION + " = ?", new String[] {couponCount + "", couponBrand, couponTitle, couponDenomination});
        }
        return true;
    }

public boolean checkOrder(String couponBrand, String couponTitle, String couponDenomination) {
        database = this.getReadableDatabase();
        try {
            checkOrderConfirmationCursor = database.rawQuery("SELECT * FROM " + TABLE_ORDER_CONFIRMATION + " WHERE " + KEY_ORDER_BRAND + " = ? AND " + KEY_ORDER_TITLE + " = ? AND " + KEY_ORDER_DENOMINATION + " = ?", new String[] {couponBrand, couponTitle, couponDenomination});

            if (checkOrderConfirmationCursor == null) {
                if (checkOrderConfirmationCursor.getCount() <= 0) {
                }
            }
            else {
                return true;
            }
        }
        catch (SQLiteException sqle) {
            sqle.printStackTrace();
        }
        return false;
    }

I want to update coupon count if the new row contains duplicate data but doesn't get something to do so. 我想更新优惠券计数,如果新行包含重复的数据,但没有任何帮助。 Any help would be appreciable. 任何帮助将是可观的。 Thanks in advance. 提前致谢。

Try changing checkOrder to: 尝试将checkOrder更改为:

public boolean checkOrder(String couponBrand, String couponTitle, String couponDenomination) {
    database = this.getReadableDatabase();
    try {
        Cursor checkOrderConfirmationCursor = database.rawQuery("SELECT * FROM " + TABLE_ORDER_CONFIRMATION + " WHERE " + KEY_ORDER_BRAND + " = ? AND " + KEY_ORDER_TITLE + " = ? AND " + KEY_ORDER_DENOMINATION + " = ?", new String[] {couponBrand, couponTitle, couponDenomination});

        if (checkOrderConfirmationCursor != null
                && checkOrderConfirmationCursor.getCount() > 0) {
            return true
        }
    }
    catch (SQLiteException sqle) {
        sqle.printStackTrace();
    }
    return false;
}

Also your main method is calling checkOrderConfirmation but the method is named checkOrder ... 另外,您的主要方法是调用checkOrderConfirmation但是该方法名为checkOrder ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM