0

我有一个在单击按钮时触发的事件,该事件调用一个从数据库中删除所选行的存储过程。

在调试时,我已经用 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();
4

2 回答 2

2

SQL Int 类型映射到 C# Int32 类型。您可能会在转换过程中丢失数据。尝试更换

cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt16(hiddenfield1.Value.ToString()));

cmd.Parameters.AddWithValue("@VARIABLEFORPROC", Convert.ToInt32(hiddenfield1.Value.ToString()));
于 2012-06-06T14:43:13.510 回答
0

您必须在 SQL 中尝试存储过程的准确性,而不是在事务上尝试并在数据库上记录异常您必须确定错误发生在哪里

于 2012-06-06T14:42:26.940 回答