sql - 如何在 .NET 中执行 SQL 文件并处理所有可能的结果

标签 sql .net sql-server

也许答案就在某处,但我找不到满足此要求的答案。

SQL 脚本可以包含任何类型的命令:

  1. 选择计数(*)....
  2. 选择 Field1、Field2、Field3...
  3. 插入表 1 (...) 值 (...)
  4. 修改表Table1
  5. 执行 ProcName1...

执行每个命令后,应捕获其结果,类似于 SSMS。所以上述命令的结果如下所示:

  1. 一列的结果代表行数(用于计数)
  2. 结果集列出所有行(用于选择)
  3. 插入的行数(用于插入)
  4. 命令成功完成(用于更改) ...

这个答案听起来不错 ( https://stackoverflow.com/a/1728859/4903729 ) 但无法捕获结果。

非常感谢任何建议。谢谢!

更新: 发现这很有用 https://github.com/DbUp/DbUp , 但它似乎没有回馈输出

最佳答案

要获取消息,您需要订阅事件 SqlConnection.InfoMessage

例如:

using (var cn = new SqlConnection(cs))
{
  cn.InfoMessage += (sender, eventArgs) => Console.WriteLine("    Message: "+ eventArgs.Message);

我正在使用它来获取“SET STATISTICS IO ON”的输出(它与 ExecuteNonQuery 一起使用)

关于sql - 如何在 .NET 中执行 SQL 文件并处理所有可能的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39221405/

相关文章:

c# - 如何将 BufferList 与 SocketAsyncEventArgs 一起使用而不获取 SocketError InvalidArgument?

sql-server - Azure 弹性数据库池,数据库的最大存储容量是多少?

sql - sql中如何将 "null"修改为 "not null"

mysql - Django将原始查询结果作为对象

sql - TSQL Left Join with multiple right hand rows

sql - BIGINT(8) 是 MySQL 可以存储的最大整数吗?

javascript - 使用身份服务器 4 匿名访问 SignalR hub

c# - 使用 Graph API 将更新发布到 Facebook 粉丝页面?

sql - 如何找出哪个存储过程正在使用 SQL Server 中特定表的特定列?

sql - 在 SQL Server 中存储日期值的货币数据类型?