我正在使用以下代码更新数据库中的人员电子邮件和密码。我有一个只有一行的datagridview。当我点击“更新”按钮时,没有任何反应 - 页面被刷新,文本框中的值又回到了以前的状态......更新无法正常工作。请帮忙。谢谢!
protected void btnUpdateAccount_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "UPDATE Member SET [Email] = @email, [Password] = @password WHERE [MemberID] = '" + mem_id + "'";
TextBox email = email = (TextBox)Gridview1.Rows[0].FindControl("user_email");
TextBox password = (TextBox)Gridview1.Rows[0].FindControl("user_password");
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@email", SqlDbType.VarChar);
cmd.Parameters.Add("@password", SqlDbType.VarChar);
cmd.Parameters["@email"].Value = email.Text;
cmd.Parameters["@password"].Value = password.Text;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error: ";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
答案 0 :(得分:1)
cmd.ExecuteNonQuery();
它返回一个整数值,所以你可以把它。
int i = cmd.ExecuteNonQuery();
并查看它返回的内容,也可以在catch之后最终使用以确保db con已关闭。在这里你只是在catch中使用它,也尝试放置断点,看看参数是否以正确的方式传递并跟随它直到结束。
像
finally
{
if (con != null)
{
con.Close();
}
}
答案 1 :(得分:0)
确保放入PageLoad Clause
**改变** 根据@marc_s注释如果(this.IsPostBack == true)更改为if(this.IsPostBack) this.IsPostBack是布尔值。
if(this.IsPostBack)
{
//dont load page
}
答案 2 :(得分:0)
有很多事情可能会发生。
答案 3 :(得分:0)
您需要再次绑定数据库中的数据以获取新的更改。网格视图.bind()