1

我有一个工作正常的 Sqlite 数据库,我可以毫无问题地插入行,但是当我尝试进行更新时,只有一列得到更新。我得到一个返回值 1,但只有 SCANNED 列得到更新,这是唯一一个值已经为 0 并更改为 1 的列。

public int UpdateScanInvoice(String Invoice, int scanned, String empname, 
              int empnum) {
        Calendar c = Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
        String formattedDate = df.format(c.getTime());
        SimpleDateFormat tf = new SimpleDateFormat("hh:mm:ss",Locale.US);
        String formattedTime = tf.format(c.getTime());
        String strFilter = MySQLiteHelper.TICKETNR + "='" + Invoice +"'";
        ContentValues scanvalues = new ContentValues();
            scanvalues.put(MySQLiteHelper.LOADEMPNAME, empname);
        scanvalues.put(MySQLiteHelper.SCANNED, scanned);
        scanvalues.put(MySQLiteHelper.LOADEMPNUM, empnum);
        scanvalues.put(MySQLiteHelper.LOADDATE,formattedDate);
        scanvalues.put(MySQLiteHelper.LOADTIME, formattedTime);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        int rowUpdated = db.update(MySQLiteHelper.TABLE_INVOICE, scanvalues,strFilter, null);
        return rowUpdated;
    }

也许我原来的插入是错误的?这是原始插入。

values.put(MySQLiteHelper.SCANNED, 0);
values.put(MySQLiteHelper.LOADDATE, "");
values.put(MySQLiteHelper.LOADTIME, "");
values.put(MySQLiteHelper.LOADEMPNAME, "");
values.put(MySQLiteHelper.LOADEMPNUM, "");

我的文件有 19 列,当我进行插入时,只有最后 4 列不会更新或获取任何值。我删除了数据重新创建了数据库,结果相同。

谢谢,金HJ

4

1 回答 1

1

你为什么要再次更新所有值你想更改扫描值,只是像这样更新该值..

    scanvalues.put(MySQLiteHelper.SCANNED, scanned);
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    int rowUpdated = db.update(MySQLiteHelper.TABLE_INVOICE, scanvalues,strFilter, null);

仅更新扫描就足够了,但是您正在更新所有值..这将替换您的所有旧数据

于 2013-09-24T06:27:02.947 回答