4

我想使用 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());
            }
        }
4

2 回答 2

10

如果我理解正确,我认为您的意思是检索来自发出 sql 命令的“信息性消息”。我没有尝试过,但我认为“打印语句”结果的处理方式相同。在这种情况下,您需要将信息事件处理程序添加到您的 sql 连接对象。

请参阅这篇文章,其中解释了如何执行此操作。

很简单(摘自文章的片段)

myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);
}
于 2013-11-12T20:32:17.740 回答
2

ExecuteNonQuery根据受影响的行数返回一个int并用于UPDATE,DELETEINSERT.

请参阅 MSDN 文档

SqlCommand.ExecuteNonQuery 方法

你要ExecuteScalar

于 2013-11-12T20:17:02.280 回答