-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 に答える