Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从存储的进程获取SQL打印消息_C# - Fatal编程技术网

C# 从存储的进程获取SQL打印消息

C# 从存储的进程获取SQL打印消息,c#,C#,我有一个存储的进程,它将打印消息输出到消息选项卡。 我想抓取这些,并在过程完成后将它们显示给用户 这是我正在尝试的,但它回来时是空的。这也不是因为我正在清理StringBuilder。我将clear移到Open,仍然给出相同的结果 private static void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e) { sqlMessages.AppendLine(e.Message); } private sta

我有一个存储的进程,它将打印消息输出到消息选项卡。 我想抓取这些,并在过程完成后将它们显示给用户

这是我正在尝试的,但它回来时是空的。这也不是因为我正在清理StringBuilder。我将clear移到Open,仍然给出相同的结果

private static void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    sqlMessages.AppendLine(e.Message);
}

private static void Open()
{
    if (conn.State.Equals(ConnectionState.Closed))
    {
        conn.InfoMessage += conn_InfoMessage;
        conn.Open();
    }
}

private static void Close()
{
    if (conn.State.Equals(ConnectionState.Open))
    {
        conn.InfoMessage -= conn_InfoMessage;
        sqlMessages.Clear();
        conn.Close();
    }
}

public static string RemoveContacts(int customerCode)
    {
        try
        {
            Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "s_RemoveAllCustomerContacts";
                cmd.Parameters.AddWithValue("@customerCode", customerCode);
                cmd.ExecuteNonQuery();
                return sqlMessages.ToString();
            }
        }
        catch (SqlException ex)
        {
            throw new ArgumentException(ex.Message);
        }
        finally
        {
            Close();
        }
    }

好的,所以我想出了我的答案,不得不使用下面的

private static void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e)
    {
        if (e.Errors != null)
        {
            for (int i = 0; i < e.Errors.Count; i++)
            {
                sqlMessages.AppendLine(e.Errors[i].Message);
            }
        }
    }
private static void conn_InfoMessage(对象发送方,SqlInfoMessageEventArgs e)
{
如果(例如错误!=null)
{
对于(int i=0;i
可能重复@EkoostikMartin它对我不起作用尽管我不知道这段代码是如何编译的,你能包含完整的类吗?所有方法都提供了