我正在使用连接到数据库的应用程序。如果某些数据库操作失败,我肯定希望进行回滚。我只是想知道,哪个事务+ try-catch更好用,SQL或VB.NET?SQL Transaction + Try-catch或VB.NET Transaction + Try-catch?
在VB.NET中,我们可以这样做:
Try
...
Catch ex As Exception
MyTransaction.Rollback
End Try
如果尝试捕捉是SQL:
...
MyCommand.CommandText = _
"USE AdventureWorks2008R2; " & _
"GO " & _
"BEGIN TRANSACTION; " & _
"BEGIN TRY " & _
" ... " & _
"END TRY " & _
"BEGIN CATCH " & _
" SELECT " & _
" ERROR_NUMBER() AS ErrorNumber " & _
" ,ERROR_SEVERITY() AS ErrorSeverity " & _
" ,ERROR_STATE() AS ErrorState " & _
" ,ERROR_PROCEDURE() AS ErrorProcedure " & _
" ,ERROR_LINE() AS ErrorLine " & _
" ,ERROR_MESSAGE() AS ErrorMessage; " & _
" IF @@TRANCOUNT > 0 " & _
" ROLLBACK TRANSACTION; " & _
"END CATCH; " & _
"IF @@TRANCOUNT > 0 " & _
" COMMIT TRANSACTION; " & _
"GO " & _
MyCommand.ExecuteNonQuery()
我总是使用第一个,通VB.NET。有什么区别吗?那些是什么?有什么缺点?
_the vb.net版本被翻译并作为sql queries_运行 - 事务,是; 'try' ...'catch',no。如果它是LINQ查询的一部分或“Expression”的一部分,那么这首先是可能的。 – stakx