-1

我的应用程序中有一个编辑选项卡,用户可以在其中编辑他在注册期间给出的详细信息。在编辑活动中,我有一个保存按钮,单击该按钮可保存数据或将数据更新到数据库中。

代码

public void onSave(View btn)
{
    EditText edtName = (EditText) findViewById(R.id.edtNameED);
    EditText edtPass = (EditText) findViewById(R.id.edtPassED);
    EditText edtEmail = (EditText) findViewById(R.id.edtEmailED);
    EditText edtPh = (EditText) findViewById(R.id.edtPhED);
    int id=0;
    String where = DataBase_Server.C_ID+"=?";
    String[] whereArgs = {id+""};
    DataBase_Server database=new DataBase_Server(Edit.this);
    SQLiteDatabase db=database.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(DataBase_Server.MOBILE_NO, edtPh.getText().toString());
    values.put(DataBase_Server.PASS, edtPass.getText().toString());
    values.put(DataBase_Server.EMAIL, edtEmail.getText().toString());
    for(int i=0;i<edtName.length();i++)
    {
        id+=(int)edtName.getText().toString().charAt(i);
    }
    Toast.makeText(this,id+"  hello", Toast.LENGTH_LONG).show();
    try
    {
        db.update(DataBase_Server.TABLE, values,where,whereArgs);
    }catch(Exception e){}
    Toast.makeText(this,"UPDATE SUCESSFULL !!", Toast.LENGTH_LONG).show();
    db.close();
    database.close();
}

该代码没有给出一个错误,但它甚至没有更新数据库中的任何内容。即使在用户编辑他的详细信息之后,数据库也根本没有改变。

4

1 回答 1

0

您正在将名称中所有字符的值相加:

for(int i=0;i<edtName.length();i++)
    id+=(int)edtName.getText().toString().charAt(i);

这不太可能是您的真实 ID 值。如果没有符合WHERE条件的记录,更新将无声无息地执行任何操作。

必须记住加载数据时的 ID 值,因为名称可能已更改。

于 2012-09-25T14:30:02.583 回答