更新没有DBHelper的数据

问题描述 投票:0回答:2
 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仍然相同就像我插入时一样

请帮我

java android android-sqlite
2个回答
1
投票

请查看您的查询:

db.execSQL("update mytable set amount = '"+amount1+"' wherebarcode='"+barcode1+"' ");

在where子句之后你没有空格。编辑并重试


0
投票

你有两个问题。第一个是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();
    }

你不妨看看: -

© www.soinside.com 2019 - 2024. All rights reserved.