Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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
如何从.NET应用程序中的SQL Server messagePane获取消息_.net_Sql Server - Fatal编程技术网

如何从.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时,我可以在消息窗格中看到消息。我怀疑即使没有警告或失败,也会调用此事件。我的意思是当存储过程成功执行时..是否调用此事件?