无法预料到无法执行错误

时间:2018-07-21 19:09:02

标签: c# sql-server

我有以下代码,出于测试目的,该代码有故意的语法错误。

const string sql = @"
    INSERT RUNHISTORY ( r_activity_id)
                      (@r_activity_id)  -- Intentional missing VALUES
    ";
SqlCommand command = new SqlCommand(sql, connection);

command.Parameters.Add(new SqlParameter("@r_activity_id", System.Data.SqlDbType.Int, 0));
command.Prepare();
command.Parameters[0].Value = r_activity_id;

int rowsUpdated = command.ExecuteNonQuery();  // This line throws exception.

我得到:

System.Data.SqlClient.SqlException: 'Incorrect syntax near '@r_activity_id'. 
Statement(s) could not be prepared.

我希望在Prepare()行而不是Execute()行得到该错误。

这对我很重要,因为我在程序执行的早期就准备了所有sql,以发现问题并在程序执行有意义的操作之前就停止了操作。

如何在Prepare()语句中捕获此错误。

1 个答案:

答案 0 :(得分:0)

该方法似乎不再引发异常:

  

在Visual Studio 2010之前,Prepare引发了异常。开始于   在Visual Studio 2010中,此方法不会引发异常。1