我有一个存储过程,它将打印消息输出到消息选项卡。 我想抓住这些并在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();
}
}
答案 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);
}
}
}