我有一个事件在按钮单击时触发,该事件调用从数据库中删除所选行的存储过程。
在调试中我已经使用id对存储过程进行了硬编码,以确保删除工作在SQL端,因此我不会发布存储过程。我也进入了我的页面并选择了要删除的记录,确保隐藏字段被设置为记录的id。
当我点击时,我看到发回的帖子,所以我看到按钮触发,它可能是一些小而愚蠢的我的代码或权限问题我不知道或在哪里寻找。
存储过程的参数是一个整数,我没有遇到捕获或抛出任何类型的错误,数据都没有被删除。
感谢您对此问题的任何帮助,我们非常感谢。
这是单击按钮时触发的代码。
if (isAdmin)
{
SqlConnection cnx = new SqlConnection(server);
SqlCommand cmd = new SqlCommand("STOREDPROCNAME", cnx);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString()));
try
{
cnx.Open();
cmd.ExecuteNonQuery();
cnx.Close();
}
catch (Exception ex)
{
throw new Exception("Error executing MyProcedureName.", ex);
}
}
fillDataGrids();
答案 0 :(得分:2)
The SQL Int type maps to the C# Int32 type。转换过程中可能会丢失数据。尝试替换
cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString()));
与
cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt32(hiddenfield1.Value.ToString()));
答案 1 :(得分:0)
您必须在SQL中尝试存储过程的准确性 然后在事务上尝试并在DB上记录异常 你必须确定发生错误的地方