如何从Database.ExecuteNonQuery获取输出?

时间:2013-11-12 20:13:16

标签: c# command output capture executenonquery

我想使用Database.ExecuteNonQuery或类似的东西来执行sql脚本,然后捕获输出。

例如:创建xxx表

我的剧本:

        strArray = Regex.Split(streamReader.ReadToEnd(), "\r\nGO");
        if (connection.State == ConnectionState.Open)
        {
            System.Data.SqlClient.SqlCommand cmd;
            foreach (string sql in strArray)
            {
                cmd = new System.Data.SqlClient.SqlCommand(sql);
                cmd.Connection = connection;
                Console.WriteLine(sql);
                Console.WriteLine(cmd.ExecuteNonQuery().ToString());
            }
        }

2 个答案:

答案 0 :(得分:7)

如果我理解正确,我认为你的意思是检索发出sql命令的“信息性消息”。我没试过,但我认为“打印报表”的结果是以同样的方式处理的。在这种情况下,您需要向sql连接对象添加信息事件处理程序。

请参阅this article,其中说明了如何执行此操作。

非常简单(从aticle抓起的片段)

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);
}

答案 1 :(得分:2)

ExecuteNonQuery根据受影响的行数返回int,用于UPDATEDELETEINSERT

请参阅MSDN文档

SqlCommand.ExecuteNonQuery Method

您想要ExecuteScalar