如何更新表值

Posted

技术标签:

【中文标题】如何更新表值【英文标题】:How to update the table values 【发布时间】:2013-11-10 04:35:27 【问题描述】:

我有桌子(如图所示)。我想更新时间列。我有medicine_id(second column)如何更新不同的时间取决于同一个medicine_id(second column)

另外,当我更新时间时,我的数据库中有四行应该是两行,我想用特定的medicine_id.. 删除另外两行。

我有以下更新代码:

if(mon) 
   for (int i = 0; i < dosage_per_day; i++) 
        mMedicineDbHelper.updateMedicines(new 
                             MedicineTime(row_id, time_InMillies[i]));
   
 

我的数据库代码:

public void updateMedicines(MedicineTime medicineTime) 

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(ID, medicineTime.getId());
    values.put(MEDICINEID, medicineTime.getMedicine_id());
    values.put(TIME, medicineTime.getTime_in_millis());
    db.update(TABLENAME, values, MEDICINEID + " = ?", 
              new String[]String.valueOf(medicineTime.getMedicine_id()));
    db.close();


它显示异常.. 任何人都可以帮助解决这个问题...

【问题讨论】:

你能发布这个问题的 logcat 吗? @MariusM 看看我编辑的帖子... 嗯,logcat 非常简单,您正在更新一个作为主键且被限制为唯一的 id。您应该只更新用药时间 如果你的 id 列是主键,那么基本上你不需要这一行:values.put(ID, drugTime.getId()); @MariusM 确实有效..还有一个我想在同一个医学 ID 中插入不同的时间值我能做什么。 【参考方案1】:

对于最初提出的问题,您正在执行以下代码:

db.update(TABLENAME, values, MEDICINEID + " = ?", 
          new String[]String.valueOf(medicineTime.getMedicine_id()));

出于某种原因,在 android 上,将数值转换为字符串并将它们用于选择参数永远无法正常工作。请参阅:Android Sqlite selection args[] with int values。最好的方法如下:

db.update(TABLENAME, values, MEDICINEID + " = " + medicineTime.getMedicine_id(), null);

【讨论】:

以上是关于如何更新表值的主要内容,如果未能解决你的问题,请参考以下文章

更新来自其他表的表值,如分布

使用下拉列表更新表值而不使用提交按钮

更新 SQL 视图,对外部表值实施约束

MySQL 根据另一个表值更新表

更改表值时Vuex Store不更新

用于从 N 记录的其他表值更新值的 SQL 查询