2

大家好,我想在点击更新按钮时更新一行,但它不起作用。我使用了以下代码。

 public void btnUpdate(View v) { 
handeler.updateData(updateName.getText().toString(), updatePhone .getText().toString(), updateEmail.getText().toString(),id);
 } 

public void updateData(String name, String phone, String email, String id) {
 ContentValues values = new ContentValues(); 
values.put(COLUMN_FIRST, name); 
values.put(COLUMN_SECOND, phone); values.put(COLUMN_THIRD, email); database.update(TABLE_NAME, values, id, null); 
} 
public void search() {
        Cursor cursor = handeler.getData();
        if (cursor.moveToFirst()) {
            String phoneNo;
            phoneNo = updateByPhone.getText().toString();
            do {
                String s1 = cursor.getString(2);
                if (phoneNo.compareTo(s1) == 0) {
                    id = cursor.getString(0);
                    updateName.setText(cursor.getString(1));
                    updateEmail.setText(cursor.getString(3));
                    updatePhone.setText(cursor.getString(2));

                }
            } while (cursor.moveToNext());

        }

    }

所以如果有人知道,请建议我如何解决它。谢谢

4

3 回答 3

2

我看到几个可能的问题:

updatePhone .getText().toString()1)你应该有一个额外的空间updatePhone.getText().toString()

2)你正在传递一个变量idfrom btnUpdatetoupdateData但不清楚它来自哪里(或者即使它确实存在)

我敢打赌,#2 是你的问题。您可能需要将 id(我假设这意味着您要在数据库中修改的 RowId)传递给btnUpdate方法:

public void btnUpdate(View v, long id)    

还有其他可能性......您没有显示您的数据库结构,因此可能是某些约束导致更新失败。

编辑

update method文档显示了这一点 :

public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

注意部分String whereClause。这应该是一个 SQL WHERE 语句(没有 WHERE)。您只传入 id,而不是 WHERE 子句。更改对 update 的调用以使其成为 WHERE 子句,它应该可以工作。几个例子:

database.update(TABLE_NAME, values, "_id = " + id, null); 

database.update(TABLE_NAME, values, "_id = '" + id + "'", null); 

这两个示例都假设您的行 id 列标记为 _id。

第一个例子是 ifid是一个整数值。那里的问题是您设置id为字符串,所以我不确定是否是这种情况。如果它应该是一个 int,你应该使用它来id = cursor.getInt(0);代替id = cursor.getString(0);.

如果它确实是一个字符串而不是一个 int,请使用第二个版本,它id用单引号括起来表示它是一个字符串。

希望这可以帮助!

于 2012-05-03T15:18:03.620 回答
0

更改代码

database.update(TABLE_NAME, values, "_id='?'", new String[]{id}); 

编辑

database.update(TABLE_NAME, values, "_id=?", new String[]{id}); 
于 2012-05-03T15:05:18.883 回答
0

最后我得到了解决方案,这是一个小错误,使用以下代码我们可以执行更新操作

database.update(TABLE_NAME, values, BaseColumns._ID + "=" + id, null);
于 2012-05-04T12:04:44.663 回答