如何更新android sqlite中列值更改的特定行

时间:2013-10-30 12:01:10

标签: android sql-update android-sqlite shopping-cart

我正在开发购物车模块。当我按下购物车按钮时,我想将购物车添加到我的数据库中,方案是我在我的详细信息页面中有两个产品,一个是电子书,另一个是pbook。如果我按其中任何一个,我需要根据专业版,名称和自动增量键创建一行。然后,如果我按第二个购物车按钮,我需要通过检查专业或名称值存在再次更新同一行。以下是我创建数据库的方法。如果数据库列中存在该值,任何人都可以帮助我更新行。

   //////From activity

     AddCartHelper databaseHelper=new AddCartHelper(WYWProductDetail.this);
     databaseHelper.saveCategoryRecord(wyw_pro_id,wyw_book_name);


    ////Helper Class


        public class AddCartHelper {
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "category.db";
private static final String TABLE_NAME = "tbcategory";
public static final String CATEGORY_COLUMN_ID = "_id";
public static final String CATEGORY_COLUMN_PRO = "pro";
public static final String CATEGORY_COLUMN_NAME = "name";
Category openHelper;
private SQLiteDatabase database;
ContentValues contentValues;
String name_id;
public AddCartHelper(Context context) {
    openHelper = new Category(context);
    database = openHelper.getWritableDatabase();

}

public void saveCategoryRecord(String name, String pro) {

    contentValues = new ContentValues();

    contentValues.put(CATEGORY_COLUMN_PRO, pro);
    contentValues.put(CATEGORY_COLUMN_NAME, name);
    if(!name.equals(contentValues.get(CATEGORY_COLUMN_NAME))) {

    } else {
        database.insert(TABLE_NAME, null, contentValues);
        database.close();
    }
    }

public Cursor getTimeRecordList() {
    return database.rawQuery("select * from " + TABLE_NAME, null);
    }
private class Category extends SQLiteOpenHelper {
    public Category(Context context) {
        // TODO Auto-generated constructor stub
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

            db.execSQL("CREATE TABLE " + TABLE_NAME + "( "
                    + CATEGORY_COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + CATEGORY_COLUMN_PRO + " TEXT, "
                    + CATEGORY_COLUMN_NAME + " TEXT )" );   
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS"+ TABLE_NAME);
        onCreate(db);
    }
   }
}

1 个答案:

答案 0 :(得分:3)

这将使用newName更新Name = oldName的所有行。

public int updateAllName(String oldName, String newName) {
    ContentValues values = new ContentValues();
    values.put(CATEGORY_COLUMN_NAME, newName);
    return Db.update(TABLE_NAME, values, CATEGORY_COLUMN_NAME + " = '" + oldName + "'", null);
}  

这将使用newPro

更新Pro = oldPro的所有行
public int updateAllPro(String oldPro, String newPro) {
    ContentValues values = new ContentValues();
    values.put(CATEGORY_COLUMN_PRO, newPro);
    return Db.update(TABLE_NAME, values, CATEGORY_COLUMN_PRO + " = '" + oldPro + "'", null);
}