【发布时间】:2013-11-27 10:59:44
【问题描述】:
我有一个更新查询(存储过程),当我执行它时它在 SQL Server 中正常工作。
CREATE PROCEDURE updatestudenthws(@stdid nvarchar(50),@hwid int, @grade float)
AS
UPDATE Table_Exercise_Answer
SET
ExAns_Grade = @grade
WHERE ExAns_Exercise = @hwid AND ExAns_Student = @stdid
但是当我运行程序时,它对我的表没有任何影响,而且我也没有任何错误。
con.Open();
SqlCommand cmd = new SqlCommand("updatestudenthws", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@hwid", SqlDbType.VarChar);
cmd.Parameters.Add("@stdid", SqlDbType.VarChar);
cmd.Parameters.Add("@grade", SqlDbType.VarChar);
cmd.Parameters["@hwid"].Value = hwid;
cmd.Parameters["@stdid"].Value = studentid;
cmd.Parameters["@grade"].Value = grade;
cmd.ExecuteNonQuery();
con.Close();
我的错误是什么? 我应该如何完成这项工作?
【问题讨论】:
-
您是否检查过您是否传递了所需的 hwid 和 stdid 参数? Myabe 的 stdid 是否超过 50 个字符?
-
为什么您在 sp 中将
@hwid定义为int而将参数添加为SqlDbType.VarChar? -
我怀疑 where 子句中的参数,你在调试时检查过它们的值吗?
-
你的hwid、studentid、grade有值吗?
-
尝试更改 cmd.Parameters.Add("@hwid", SqlDbType.Int);和 cmd.Parameters.Add("@grade", SqlDbType.Float);
标签: c# sql sql-server winforms