更新c#not update数据库中的命令

时间:2011-08-14 09:29:00

标签: c# asp.net sql sql-update

我找到了解决这个特殊问题的方法:将数据库中的数据加载到一组控件中,并将更新信息导入一组单独的控件中。感谢您的评论;该申请正在运作。

尝试更新数据库行。我根据我在几个论坛/网站上发现的内容编写了以下代码。他的代码没有更新数据库。

在尝试修复此错误之后,我发现了以下内容:如果@editFirstName的值是文字,数据库将正确更新,如

      UpdateCmd.Parameters["@editFirstName"] = "George";

我也试过

  UpdateCmd.Parameters["@editFirstName"] = "'" + editFirstNameContent.Text + "'";

哪个不起作用。

我还尝试将TextBox数据放入变量并使用变量:

   string firstNameValue = editFirstNameContent.Text;
   UpdateCmd.Parameters["@editFirstName"] = firstNameValue;

哪个不起作用。

因此,UPDATE命令显然正在更新数据库。但是,显然,Parameters.Value行不会读取TextBox中的数据,因此不会使用更改后的值进行更新。

protected void editCustomerButton_Click(object Sender, EventArgs e)
{
    string connString = WebConfigurationManager.ConnectionStrings["proofreadThePlanetConnectionString"].ConnectionString;
    using (SqlConnection connection = new SqlConnection(connString))
    {
        connection.Open();
        string updateString = "UPDATE tblCustomerInfo SET customerID=@editCustomerID, customerFirstName=@editFirstName, customerLastName=@editLastName, customerEmail=@editEmail WHERE customerID=" + Request.QueryString["EID"];
        SqlCommand UpdateCmd = new SqlCommand(updateString, connection);
        UpdateCmd.Parameters.Add("@editCustomerID", SqlDbType.Int);
        UpdateCmd.Parameters["@editCustomerID"].Value = editCustomerIDContent.Text;
        UpdateCmd.Parameters.Add("@editFirstName", SqlDbType.VarChar, 25);
        UpdateCmd.Parameters["@editFirstName"].Value = editFirstNameContent.Text;
        UpdateCmd.Parameters.Add("@editLastName", SqlDbType.VarChar, 50);
        UpdateCmd.Parameters["@editLastName"].Value = editLastNameContent.Text;
        UpdateCmd.Parameters.Add("@editEmail", SqlDbType.VarChar, 75);
        UpdateCmd.Parameters["@editEmail"].Value = editEmailContent.Text;
        UpdateCmd.ExecuteNonQuery();
    }
}

3 个答案:

答案 0 :(得分:2)

我不确定MS SQL Server如何处理自动提交,但如果未启用自动提交模式,则需要手动提交事务(UpdateCmd.Transaction.Commit)。

答案 1 :(得分:0)

SQL Profiler附带SQL Management Studio。在执行代码时运行此命令以查看实际执行的命令。

以下是有关如何使用分析器的教程。

http://sqlserverpedia.com/wiki/Using_SQL_Server_Profiler

答案 2 :(得分:0)

我会检查

Request.QueryString["EID"]

确实包含正确的 customerId 值,因为如果您尝试更新不存在的行,这可能导致语句运行但没有数据需要更新。

为确保正确设置参数值,您可以尝试以下格式;

command.Parameters.Add("@editCustomerID", SqlDbType.Int).Value = editCustomerIDContent.Text;

正如Ash所建议的那样,确切地知道发生了什么的最好方法是在执行命令时对数据库运行Profiler(注意:这会对性能产生影响,应该在Test / Dev上完成系统或非工作时间)