我有一个工作正常的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列不会更新或取任何值。 我删除了重建数据库的数据,结果相同。
谢谢, KimHJ
答案 0 :(得分:1)
为什么你要再次更新所有值你想要更改SCANNED值只是为了更新那个值..
scanvalues.put(MySQLiteHelper.SCANNED, scanned);
SQLiteDatabase db = dbHelper.getWritableDatabase();
int rowUpdated = db.update(MySQLiteHelper.TABLE_INVOICE, scanvalues,strFilter, null);
仅更新SCANNED这已经足够了,但您正在更新所有值...这将替换您的所有旧数据