C# 更新的值未存储在文本框中

C# 更新的值未存储在文本框中,c#,asp.net,C#,Asp.net,//按钮点击功能 protected void Page_Load(object sender, EventArgs e) { cnst = "Data Source=IBM369-R9WAKY5;Initial Catalog=anudatabase;Integrated Security=True"; cn = new SqlConnection(cnst); cn.Open(); st = "select *

//按钮点击功能

    protected void Page_Load(object sender, EventArgs e)
    {
        cnst = "Data Source=IBM369-R9WAKY5;Initial Catalog=anudatabase;Integrated Security=True";
        cn = new SqlConnection(cnst);

        cn.Open();
        st = "select * from patient_db where unique_id = 123";
        cmd = new SqlCommand(st, cn);
        dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Label9.Text = dr.GetString(1);
            Label10.Text = dr.GetInt16(2).ToString();
            Label11.Text = dr.GetString(6);
            Label12.Text = dr.GetString(7);
            TextBox1.Text = dr.GetString(3);
            TextBox2.Text = dr.GetDecimal(4).ToString();

        }
        cn.Close();
    }

从数据库将值分配给textbox后,如果我在文本框中键入其他新值,它不会接受新值,它仍然保留旧值。我可以知道原因和解决方案吗?提前感谢

添加
IsPostBack
控件在
页面加载
方法。因为在
按钮\u单击
事件
页面\u加载
事件触发之前

protected void Button1_Click(object sender, EventArgs e)
    {
        cn.Open();           
        st = "update patient_db set address ='" + TextBox1.Text + "' ,phone=" + TextBox2.Text+"where unique_id=123";
        cmd = new SqlCommand(st, cn);
        int result2 = cmd.ExecuteNonQuery();

        if (Convert.ToBoolean(result2))
        {
            result1.Text = "details updated successfully";
        }
        cn.Close();
    }

在加载方法中添加
IsPostBack
控件。因为在
按钮\u单击
事件
页面\u加载
事件触发之前

protected void Button1_Click(object sender, EventArgs e)
    {
        cn.Open();           
        st = "update patient_db set address ='" + TextBox1.Text + "' ,phone=" + TextBox2.Text+"where unique_id=123";
        cmd = new SqlCommand(st, cn);
        int result2 = cmd.ExecuteNonQuery();

        if (Convert.ToBoolean(result2))
        {
            result1.Text = "details updated successfully";
        }
        cn.Close();
    }

您需要检查页面加载中的page.Ispostback属性。 这是你的密码

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        cnst = "Data Source=IBM369-R9WAKY5;Initial Catalog=anudatabase;Integrated Security=True";
        cn = new SqlConnection(cnst);

        cn.Open();
        st = "select * from patient_db where unique_id = 123";
        cmd = new SqlCommand(st, cn);
        dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Label9.Text = dr.GetString(1);
            Label10.Text = dr.GetInt16(2).ToString();
            Label11.Text = dr.GetString(6);
            Label12.Text = dr.GetString(7);
            TextBox1.Text = dr.GetString(3);
            TextBox2.Text = dr.GetDecimal(4).ToString();
        }
        cn.Close();
    }
}

当你们点击按钮时,它将首先调用PageLoad事件。所以它会再次将您的旧值设置为textbox,然后调用update方法。所以Update方法会将旧值更新到数据库。

您需要在页面加载中检查page.Ispostback属性。 这是你的密码

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        cnst = "Data Source=IBM369-R9WAKY5;Initial Catalog=anudatabase;Integrated Security=True";
        cn = new SqlConnection(cnst);

        cn.Open();
        st = "select * from patient_db where unique_id = 123";
        cmd = new SqlCommand(st, cn);
        dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            Label9.Text = dr.GetString(1);
            Label10.Text = dr.GetInt16(2).ToString();
            Label11.Text = dr.GetString(6);
            Label12.Text = dr.GetString(7);
            TextBox1.Text = dr.GetString(3);
            TextBox2.Text = dr.GetDecimal(4).ToString();
        }
        cn.Close();
    }
}

当你们点击按钮时,它将首先调用PageLoad事件。所以它会再次将您的旧值设置为textbox,然后调用update方法。所以Update方法会将旧值更新到数据库中。

写一个方法
LoadData
,将代码从page\u load移到这个方法中。然后,如果(!IsPostBack)-检查,则从包装在
中的页面调用此方法。更新值后,也可以从按钮单击事件处理程序调用此方法

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    cnst = "Data Source=IBM369-R9WAKY5;Initial Catalog=anudatabase;Integrated Security=True";
    cn = new SqlConnection(cnst);

    cn.Open();
    st = "select * from patient_db where unique_id = 123";
    cmd = new SqlCommand(st, cn);
    dr = cmd.ExecuteReader();
    if (dr.Read())
    {
        Label9.Text = dr.GetString(1);
        Label10.Text = dr.GetInt16(2).ToString();
        Label11.Text = dr.GetString(6);
        Label12.Text = dr.GetString(7);
        TextBox1.Text = dr.GetString(3);
        TextBox2.Text = dr.GetDecimal(4).ToString();

    }
    cn.Close();
   }
}
重要提示:

  • 对于实现
    IDisposable
    的每个对象,也要使用
    using
    -语句,如
    连接
    或数据读取器。这样,所有非托管资源都会得到正确的处置。即使发生错误
  • If
    123
    只是一个示例,实际上是用户提供的值,请使用sql参数来防止sql注入。不,总是用它们

编写一个方法
加载数据
,将代码从加载页面移动到此方法中。然后,如果(!IsPostBack)
-检查,则从包装在
中的页面调用此方法。更新值后,也可以从按钮单击事件处理程序调用此方法

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    cnst = "Data Source=IBM369-R9WAKY5;Initial Catalog=anudatabase;Integrated Security=True";
    cn = new SqlConnection(cnst);

    cn.Open();
    st = "select * from patient_db where unique_id = 123";
    cmd = new SqlCommand(st, cn);
    dr = cmd.ExecuteReader();
    if (dr.Read())
    {
        Label9.Text = dr.GetString(1);
        Label10.Text = dr.GetInt16(2).ToString();
        Label11.Text = dr.GetString(6);
        Label12.Text = dr.GetString(7);
        TextBox1.Text = dr.GetString(3);
        TextBox2.Text = dr.GetDecimal(4).ToString();

    }
    cn.Close();
   }
}
重要提示:

  • 对于实现
    IDisposable
    的每个对象,也要使用
    using
    -语句,如
    连接
    或数据读取器。这样,所有非托管资源都会得到正确的处置。即使发生错误
  • If
    123
    只是一个示例,实际上是用户提供的值,请使用sql参数来防止sql注入。不,总是用它们

在页面加载方法中添加IsPostBack控件。因为在按钮点击事件页面加载事件触发之前。好的,我知道了。谢谢你,你有什么异常吗?请重新检查查询。我想你应该在where“in”之前留一个空格,where unique\u id=123“我没有在页面加载方法上获得异常。因为在按钮单击事件页面加载事件触发之前。好的,我知道了。谢谢你,你有什么异常吗?请重新检查查询。我想你应该在where“in”之前留一个空格“where unique_id=123”我在那里没有遇到异常