如何从.NET应用程序中的SQL Server messagePane获取消息
我想在成功或失败的情况下得到消息。所以这两个条件都应该从消息窗格返回一些内容 这是我试图使用的代码,但它从不调用如何从.NET应用程序中的SQL Server messagePane获取消息,.net,sql-server,.net,Sql Server,我想在成功或失败的情况下得到消息。所以这两个条件都应该从消息窗格返回一些内容 这是我试图使用的代码,但它从不调用conn\u InfoMessage。它总是跳过这个 using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sp.Stor
conn\u InfoMessage
。它总是跳过这个
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sp.StoredProcedureName;
cmd.Parameters.AddRange(parameters.ToArray());
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
conn.InfoMessage += new SqlInfoMessageEventHandler(conn_InfoMessage);
pnlResults.Visible = true;
grdResults.DataSource = dr;
grdResults.DataBind();
}
}
lblInfo.Text = myMsg;
pnlInfo.CssClass = "ui-state-active";
}
conn.Close();
}
static void conn_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
myMsg += "/n" + e.Message ;
}
等你打电话给哈斯罗博士时,已经太晚了。您需要更早地连接事件处理程序。。例如,在您打开连接之前。在您打开连接或以任何其他方式使用连接之前,请确保启用了该事件:
using (SqlConnection conn = new SqlConnection(connString))
{
conn.InfoMessage += new SqlInfoMessageEventHandler(conn_InfoMessage);
conn.FireInfoMessageEventOnUserErrors = true;
conn.Open();
// rest of code follows...
在执行命令之前,请尝试设置
SqlInfoMessageEventHandler
委托。我会在Conn.Open
方法调用后将其移到下一行。我如前所述添加了此代码,但仍然没有调用事件处理程序:Conn.InfoMessage+=new SqlInfoMessageEventHandler(Conn_InfoMessage);conn.firefinfomessageeventonUserErrors=true;conn.Open();你怎么知道它不叫?您是否设置了断点,或者标签上没有显示任何内容?是的,使用断点,在错误或警告期间,我可以看到它正在调用。但当没有错误或成功时,它只需绕过代码并转到下一行。我希望它在存储执行成功时能够工作。不管怎样,我都可以强制它执行?你的问题还不清楚。你说它发射正确。。只是不是在你想要的时候。。所以您希望它什么时候运行?我在start中添加了代码,如前所述..但仍然没有调用事件处理程序..不确定我丢失了什么在这种情况下,您的查询可能不会引发任何这些事件。这是在执行存储过程。执行sqlserver management studio时,我可以在消息窗格中看到消息。我怀疑即使没有警告或失败,也会调用此事件。我的意思是当存储过程成功执行时..是否调用此事件?