SQL更新无法正常工作

时间:2012-01-24 13:14:08

标签: c# sql

我正在尝试使用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;
}

我错过了什么?

2 个答案:

答案 0 :(得分:3)

您应该更改参数添加顺序 - 对于大多数提供商而言,这都很重要。

所以它应该不是

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

而是

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

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

答案 1 :(得分:2)

  • 查看您连接的数据库是否是正确的数据库,不是测试或其他什么,服务器
  • 是相同的
  • 将查询重写为

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

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