SQL更新不起作用

本文关键字:不起作用 更新 SQL | 更新日期: 2023-09-27 18:21:28

我正在尝试使用SQL命令更新数据库,但它不起作用。

id = primarykey
public void updateName(int id, string name)
{ 
    using(var cmd = new SqlCommand("UPDATE person SET name = @name where id = @id", connect()))
    {
        cmd.Parameters.AddWithValue("@id", id);
        cmd.Parameters.AddWithValue("@name",name);
        cmd.ExecuteNonQuery();
    }
}
private SqlConnection connect()
{
    string conStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    var c = new SqlConnection(conStr);
    c.Open();
    return c;
}

我错过了什么?

SQL更新不起作用

您应该更改参数添加顺序-对于大多数提供者来说,这确实很重要。

所以它不应该是

    cmd.Parameters.AddWithValue("@id", id);
    cmd.Parameters.AddWithValue("@name",name);

而是

    cmd.Parameters.AddWithValue("@name",name);
    cmd.Parameters.AddWithValue("@id", id);

一般规则:调用cmd.Parameters.AddWithValue的顺序应与查询中参数出现的顺序相同。

  • 看看你连接的数据库是否是正确的数据库,而不是测试或其他什么,服务器也是如此
  • 将查询重写为

    UPDATE person SET name = @name where id = @id; 
    IF @@ROWCOUNT = 0 
      RAISERROR('No rows updated', 16,1)
    
  • 检查调用堆栈中是否存在一些空的try ... catch{}

  • 查看不同架构中是否存在其他person
  • 看看桌子上是否有触发器以及它的作用
  • 查看是否有其他进程正在更改同一个表
  • 查看应用程序在运行时是否命中此代码