Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
C# 检索;“输出消息”;从批处理SQL命令(SQL Server)_C#_Sql Server_Ado.net - Fatal编程技术网

C# 检索;“输出消息”;从批处理SQL命令(SQL Server)

C# 检索;“输出消息”;从批处理SQL命令(SQL Server),c#,sql-server,ado.net,C#,Sql Server,Ado.net,我正在对SQL Server执行单个批中的几个离散查询。例如: update tableX set colA = 'freedom'; select lastName from customers; insert into tableY (a,b,c) values (x,y,z); 更新tableX set colA='freedom'; 从客户中选择lastName; 在表(a、b、c)中插入值(x、y、z); 现在,我想在一个数据集中捕获结果(从select语句),这很容易做到……但我

我正在对SQL Server执行单个批中的几个离散查询。例如:

update tableX set colA = 'freedom'; select lastName from customers; insert into tableY (a,b,c) values (x,y,z); 更新tableX set colA='freedom'; 从客户中选择lastName; 在表(a、b、c)中插入值(x、y、z); 现在,我想在一个数据集中捕获结果(从select语句),这很容易做到……但我如何也从该命令捕获“元”响应,类似于Query Analyzer/SQL Mgt Studio在显示“消息”选项卡并显示类似于以下内容时所做的操作:

(1 Row affected) (2 Rows Updated) (1行受影响) (更新了2行)
我的建议是为此使用@rowcount变量。通常,在执行此类命令时,如果希望捕获潜在错误和受影响的行,我会这样做

declare @rowsAffected int, @error int

select * from sometable
     select @rowsAffected = @@rowcount, @error = @@error

if @@error <> 0 goto errorCleanup
声明@rowsAffected int,@error int
从sometable中选择*
选择@rowsAffected=@@rowcount,@error=@@error
if@@error 0转到errorCleanup

尼克正确地建议了
@@ROWCOUNT
-事实上,作为一种惯例,我总是使用
设置NOCOUNT ON
,这对性能有(小)好处-但更重要的是,这个细节是一个实现细节-所以您不应该关心

如果要返回一个值(例如更新的行数),请使用以下任一选项:

  • 返回值
  • 输出参数
  • SELECT语句

最后一个具有最大的开销

查看SQL连接事件。我想这就是你想要的: