以前只是在ExecuteNonQuery()方法里面执行一条单独的T-SQL语句,也不需要使用事务。现有代码同时执行了两条DELETE命令,就需要进行事务处理。开始并不确定ExecuteNonQuery()方法时候会自动建立一个事务来控制这两条DELETE语句,就写了一个测试代码来进行测试。第一个操作成功,第二个操作失败。执行后发现事务并不能回滚,第一个操作已经反映到数据库中。因此怀疑ExecuteNonQuery()方法只是简单的执行了SqlCommand.CommandText中的T-SQL语句,而不会默认建立一个事务。因此,在处理这种情况的时候,需要在T_SQL中加入事务处理逻辑。
注意:在ADO.NET中,使用Environment.NewLine 可以实现SQL语句的换行功能。