我正在尝试使用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;
}
我错过了什么?
答案 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
表