我的应用程序中有一个编辑选项卡,用户可以在注册时编辑他的详细信息。在编辑活动中,我有一个保存按钮,点击它时会保存 数据或将数据更新到数据库中。
代码
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();
}
代码没有给出任何错误,但它甚至没有更新数据库中的任何内容。即使用户编辑了他的详细信息,数据库也不会发生任何变化。
答案 0 :(得分:0)
您正在添加名称中所有字符的值:
for(int i=0;i<edtName.length();i++)
id+=(int)edtName.getText().toString().charAt(i);
这不太可能是您的真实身份证价值。没有匹配WHERE
条件的记录,更新将无所事事。
您必须记住加载数据时的ID值,因为名称可能已更改。