ページの読み込み時にテキスト ボックスの値を設定する次のコードがあります。
protected void Page_Load(object sender, EventArgs e)
{
localhost.UserRegistration m = new localhost.UserRegistration();
int user = m.ID(Session["Username"].ToString());
DataSet ds = m.GetUserInfo(user);
if (ds.Tables.Count > 0)
{
TextBox1.Text = ds.Tables[0].Rows[0]["emailAddress"].ToString();
TextBox2.Text = ds.Tables[0].Rows[0]["password"].ToString();
}
}
そのため、最初のユーザーがページを開くと、ユーザーのメール アドレスとパスワードがテキスト ボックスに表示されます。変更を加えて更新をクリックすると、変更された新しい値ではなく、ページの読み込み時と同じ値がデータベースに送信されます。
ユーザーの詳細を更新する次のWebサービスメソッドがあります
[WebMethod(Description = "Updates a single user")]
public string UpdateUser(int user, string emailAddress, string password)
{
// Create connection object
int ix = 0;
string rTurn = "";
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "UPDATE [User] SET [emailAddress]=@emailAddress, [password]=@password" + " WHERE [ID]=@user";
OleDbCommand oleComm = new OleDbCommand(sql, oleConn);
oleComm.Parameters.Add("@user", OleDbType.Integer).Value = user;
oleComm.Parameters.Add("@emailAddress", OleDbType.Char).Value = emailAddress;
oleComm.Parameters.Add("@password", OleDbType.Char).Value = password;
ix = oleComm.ExecuteNonQuery();
if (ix > 0)
rTurn = "User Updated";
else
rTurn = "Update Failed";
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
rTurn = ex.ToString();
}
finally
{
oleConn.Close();
}
return rTurn;
}
これは、データベースでテーブルがどのように見えるかです
クライアント側コード
protected void Button1_Click(object sender, EventArgs e)
{
string email = TextBox1.Text;
string pass = TextBox2.Text;
localhost.UserRegistration m = new localhost.UserRegistration();
int usr = m.ID(Session["Username"].ToString());
m.UpdateUser(usr, email, pass);
}
誰か理由を教えてください....