我有以下代码,出于测试目的,该代码有故意的语法错误。
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()
语句中捕获此错误。
答案 0 :(得分:0)
该方法似乎不再引发异常:
在Visual Studio 2010之前,Prepare引发了异常。开始于 在Visual Studio 2010中,此方法不会引发异常。1