数据库更新

时间:2011-02-25 03:06:51

标签: c# asp.net sql

我正在使用以下代码更新数据库中的人员电子邮件和密码。我有一个只有一行的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();
    }

}

4 个答案:

答案 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)

有很多事情可能会发生。

  1. 1)永远不会引发btnUpdateAccount_Click事件。要解决此问题,请确保asp:Button标记具有OnClick =“btnUpdateAccount_Click”属性集。
  2. 正在抛出异常并且您没有注意到。
  3. 正在更新数据库,但您没有再次加载/绑定数据以显示更新的值。

答案 3 :(得分:0)

您需要再次绑定数据库中的数据以获取新的更改。网格视图.bind()