ASP.net 无法更新 SQL 服务器中的列

ASP.net unable to UPDATE column in SQL Server

我正在创建一个在线应用程序,我试图通过 asp.net winforms 更新数据。我的数据库中有一个名为 tbCompanyNametextbox 和一个名为 companyName 的列,位于 table tblCompanySetup 中。

我正在从列中完美地选择以前的数据,但是当我尝试更新数据时,它没有更新数据,尽管没有显示任何错误。我曾在 C# 桌面应用程序中工作,但我在 ASP.NET 方面完全是新手。

我认为可能存在任何 AUTOPOSTBACK 问题,但我不知道如何解决。我正在发布我用于更新 SQL 服务器 table 中的数据的代码。请帮助我。

using (var con = new SqlConnection(ConStr))
{
    string query = @"UPDATE tblCompanySetup SET companyName = @companyName";

    using (var cmd = new SqlCommand(query, con))
    {
        con.Open();
        cmd.Parameters.AddWithValue("@companyName", SqlDbType.NVarChar).Value = tbCompanyName.Text;
        cmd.ExecuteNonQuery();
    }
}

注意:我在文本框中有以前的值,我正在使用它来更新新值。当我将该文本框清空并键入新值时,它工作正常。但是当我在文本框中 select 以前的值然后输入新值并单击提交时,我猜它实际上是在保存以前的值。当我按下提交按钮时,它会刷新表单并再次输入以前的值

您似乎有在页面加载时从数据库中检索方法。类似于:

protected void Page_Load(object sender, EventArgs e){
    RetrieveMyData(); // it is a method where you retrieve a data
}

将此更改为:

protected void Page_Load(object sender, EventArgs e){
    if (!IsPostBack)
        RetrieveMyData(); // it is a method where you retrieve a data
}

您的项目工作方式如下:

1) Page_Load -> RetrieveMyData()

2) 您的文本框有一些来自数据库的值

3) 您将该值更改为新值

4) 您点击更新按钮

5) 由于您不考虑 PostBack,它再次调用 RetrieveMyData 并且您的文本框具有旧值

6) 您的 Update 方法已执行,但未发生任何更改

如果您将像我展示的那样使用 PostBack:

1) Page_Load -> 检索我的数据

2) 您的文本框有一些来自数据库的值

3) 您更改该值

4) 您点击更新按钮

5) 当您使用 !IsPostBack 并且按钮发生回发时,您的 RetrieveMyData 方法将无法在此处工作

6) 您的更新方法会将旧值更新为新值

希望对您有所帮助