繁体   English   中英

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

[英]Get SQL print messages from stored proc

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

这是我正在尝试的方法,但它又变空了。 这也不是因为我正在清除StringBuilder。 我将清除操作移至“打开”状态,但仍给出相同的结果。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM