首页 > 解决方案 > C#中的SQL Server多命令异常捕获

问题描述

我在一个命令中执行多个更新,例如:

System.Data.SqlClient.SqlCommand command = new 
System.Data.SqlClient.SqlCommand();
command.CommandText="executing first updateSP" +"executing second 
updateSP"+.....+"executing 10th updateSP"
try
{
command.ExecuteNonQuery();
}
catch(sqlException ex)
{
ex.message;
}

如果第 2、3、4 次更新出现异常,但在 catch 块中我只得到一个 spupdate 异常。有没有办法获得所有更新异常?

标签: c#.netsql-servertry-catch

解决方案


你总是可以使用一系列 SQL 文本命令,我也总是使用连接来创建命令:

string[] cmds = new string[3] {  sp1_SQL, sp2_SQL, sp3_SQL };
try
{
  foreach( string sql in cmds)
  {
     using(System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
     {
       command.CommandText = sql;
       var rtn = command.ExecuteNonQuery();
     }
   }
}
catch(sqlException ex)
{
  ex.message;
}

此代码将在第一个异常后中止,但如果您想继续执行每个语句而不考虑异常(让我的肚子受伤),然后将 try/catch 移到foreach


推荐阅读