从存储过程中获取SQL打印消息

时间:2014-05-27 19:31:35

标签: c#

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

这是我正在尝试但它又回来了。这也不是因为我正在清除StringBuilder。我将清除移动到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();
        }
    }

1 个答案:

答案 0 :(得分:0)

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

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