【问题标题】:Returning error codes from Stored Procedure call c#从存储过程调用 c# 返回错误代码
【发布时间】:2015-07-13 16:15:40
【问题描述】:

我正在运行一个 VS2013 项目,该项目需要我连接到 SQL Server 后端数据库并在其上运行存储过程。所以在我的 app_code 文件夹中,我创建了一个 SQLHelper 类:

public class SQLHelper
{
    private const string myConnSetting = "zDevConnection";

    public DataSet getSQLData(string mySQLStoredProcedure)
    {
        try
        {
            DataSet ds = new DataSet();
            string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[myConnSetting].ConnectionString;
            SqlCommand cmd = new SqlCommand(mySQLStoredProcedure);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlConnection cn = new SqlConnection(connectionString);
            cmd.Connection = cn;

            SqlDataAdapter ad = new SqlDataAdapter(cmd);
            ad.Fill(ds);

            return ds;
        }
        catch (Exception BadSQL)
        {
            throw BadSQL;
        }
    }
}

这样我就可以在我的控制器中调用和“填充”我可以用来做事的数据集。

所以。

    protected DataSet insertBlogEntry()
    { 
        SQLHelper mySQL = new SQLHelper();
        return mySQL.getSQLData("mydatabase.MySTPName");
    }

我这样称呼:

DataSet myEntry = insertBlogEntry(model.Email, model.Name, model.Company);

一切都很好,除了存储过程无法按预期工作之外,一切都“正常”,例如,如果我尝试插入重复记录,它会返回受控错误消息。

所以我要做的是在我的控制器中捕获并返回此错误。我发现我的 SQLHelper 类中有一个错误,但我不知道如何将此错误返回给我的控制器,该控制器需要一个数据集而不是字符串。

谁能帮我看看灯?

谢谢, 克雷格

【问题讨论】:

  • 旁注:如果您不对其进行任何操作而是尝试立即重新抛出它,为什么您会捕获Exception BadSQL?当您执行throw BadSQL; 时,这实际上不是重新引发异常的正确方法,因为您将丢失堆栈跟踪。如果您需要重新抛出异常,只需执行throw;。但在这种情况下,你甚至不需要在那里有try-catch
  • 不确定我是否理解你,伙计
  • 尝试改变 throw BadSQL;到 Exception.Message;
  • 我认为我遇到的主要问题是我正在尝试填充数据集,而“badsql”或 exeption.message 是一个字符串
  • 我知道这是几年后的事了,但 sstan 是这么说的:当你在此处捕获并重新抛出错误时,堆栈跟踪会说这个捕获块是异常的起源。您需要抛出实际异常的内容以便保留。

标签: c# sql-server asp.net-mvc visual-studio-2013 error-handling


【解决方案1】:

是我,我是一个疯狂的小飞人,我应该将数据集 myEntry =.... 包装在 try catch 块中

【讨论】:

  • 这没有意义。您已经在 try catch 块中拥有所有代码。
猜你喜欢
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多