public void update(View v){String amount1 = ct2.getText().toString(); //amount
String barcode1 = ct1.getText().toString(); //barcode
ct1.setText("");//barcode
ct2.setText("");//amount
db.execSQL("update mytable set amount = '"+amount1+"' wherebarcode='"+barcode1+"' ");
Toast.makeText(this, "values updated successfully.", Toast.LENGTH_LONG).show();
this.finish();
}
我正在从android studio创建应用程序
我尝试从mytable
更新已经存储在''mydb'
'中的数据我没有使用DBHelper,所以我看不到确切的表。只是SQLite的即时代码。我可以插入新数据,但我不能UPDATE
数据我的代码似乎正确。
虽然运行应用程序一切都没有错误通过,我通过扫描与移动相机得到barcode
值所以在我的表有NAME AMOUNT BARCODE
(小)吐司显示它更新成功,但当我去检查由SELECT * from mytable
AMOUNT仍然相同就像我插入时一样
请帮我
请查看您的查询:
db.execSQL("update mytable set amount = '"+amount1+"' wherebarcode='"+barcode1+"' ");
在where子句之后你没有空格。编辑并重试
你有两个问题。第一个是WHERE关键字和列名之间没有空格。第二个是,正如您所发现的那样,无论UPDATE查询的结果如何,TOAST都会说UPDATE成功。
要修复第一个,你会改变
db.execSQL("update mytable set amount = '"+amount1+"' wherebarcode='"+barcode1+"' ");
(即增加空间): -
db.execSQL("update mytable set amount = '"+amount1+"' where barcode='"+barcode1+"' ");
但是,由于execSQL
方法没有返回结果,第二个问题将保留。修复方法是使用update
方法,该方法将返回受影响/更新的行数。
因此你可以使用: -
ContentValuse cv = new ContentValues();
cv.put("amount",amount1); // Column to update and value to update the column to.
if (db.update("mytable",cv,"barcode=?",new String[]{barcode1}) > 0) {
Toast.makeText(this, "values updated successfully.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "not updated.", Toast.LENGTH_LONG).show();
}
你不妨看看: -