首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB.NET Transaction + Try-catch还是+ Try-catch?

VB.NET Transaction + Try-catch还是+ Try-catch?
EN

Stack Overflow用户
提问于 2011-08-12 15:32:46
回答 2查看 2.4K关注 0票数 3

我正在使用一个连接到数据库的应用程序。如果某些数据库操作失败,我肯定想进行回滚。我想知道哪个transaction + try-catch更好用,SQL还是VB.NET?

在VB.NET中,我们可以这样做:

代码语言:javascript
复制
Try

...

Catch ex As Exception
    MyTransaction.Rollback
End Try

如果try catch在SQL中:

代码语言:javascript
复制
...
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,有什么不同吗?那些是什么?有什么缺点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-12 15:37:39

其中一个不同之处在于捕获的错误。

  • SQL catch将捕获SQL查询

中出现的错误,

  • VB.Net catch将捕获VB.Net中出现的错误。这包括通过.Net API

传播的编程错误和许多查询错误

您想要使用的内容高度依赖于您的情况。如果SQL块所做的只是执行查询并回滚错误,那么在VB.Net中执行回滚要好得多。这保持了数据库逻辑的紧凑和本地化。

但是,如果VB.Net try块包含其他业务逻辑,那么将回滚保留在那里可能更有意义。

票数 2
EN

Stack Overflow用户

发布于 2011-08-12 15:37:07

在功能上,它们是相同的- vb.net版本被翻译并作为sql查询运行。

主要区别在于,您可以使用相同的连接执行多个SQL语句,而不必生成一个大型SQL查询,该查询包含您希望在事务中完成的所有操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7036919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档