【问题标题】:ASP.NET 2.0 stored procedure delete not workingASP.NET 2.0 存储过程删除不起作用
【发布时间】:2012-06-06 14:33:01
【问题描述】:

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

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

【问题讨论】:

  • 并且 isAdmin 被明确设置为 true 暂时我还没有添加该功能。
  • 您是否已单步执行代码并验证您用作参数的隐藏字段值是否有效?
  • 您是否尝试过运行 SQL Profiler 以确保查询实际到达 SQL Server?
  • 在 Management Studio 中运行 sql 配置文件,看看它到底通过了什么查询..
  • 上面的代码好像没有什么问题。我认为您应该显示存储过程文本以全面了解问题

标签: c# asp.net-2.0


【解决方案1】:

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()));

【讨论】:

  • 为小而笨的人点个赞。感谢 Jon 解决了我的问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多