首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理Internet连接问题和数据库连接

处理Internet连接问题和数据库连接
EN

Stack Overflow用户
提问于 2010-10-03 13:29:23
回答 1查看 455关注 0票数 2

我意识到没有办法以原子方式保证:

代码语言:javascript
复制
if(hasInternet)
    doDatabaseCall();

然而,--在.NET世界中处理DbConnection和DbCommand对象时,处理连接问题的正确方法是什么?--我特别感兴趣的是MySqlConnection和MySqlCommand对象,但假设(希望)它的异常模式与Server的类相同。

我假设,如果在调用之前互联网崩溃了,conn.Open()就会引发一个MySqlException。我还假设,如果你打电话给ExecuteReader或ExecuteNonQuery,而互联网已经瘫痪,也会发生同样的情况。

我不确定,因为MySql对象的文档没有说明。SqlServer对象只是说它可能引发一个SqlException,这意味着:

对锁定的行执行命令时发生异常。当您使用MicrosoftWebFramework1.0版本时,不会生成此异常。

似乎不包括连接问题..。我想做的是处理异常,等待一定的时间,然后重新开始。我的应用程序的唯一目的是执行这些数据库调用并在一个专门的系统上运行,所以永远重试是我相信的最佳选择。也就是说,I希望区分连接异常和其他类型的数据库异常,这有可能吗?

我已经做了一些测试,它看起来像我假设的那样工作,但是在所有边缘情况下都能工作吗?,例如:命令成功地发送到数据库服务器,但是连接在返回之前还是在返回结果的时候中断?如果它不能在所有的边缘情况下工作,那么我将不得不:执行一个命令,查询所需的状态更改,执行下一个命令,等等。

我正在连接到本地主机上的一个端口,该端口通过SSH转发到远程服务器,如果这有区别的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-03 13:54:03

至于SqlDataProvider:

SqlException异常有几个属性,为您提供操作失败的详细信息。

对于您的用例,"Class“属性可能是一个很好的选择。它是一个字节,表示异常的严重程度。

请参阅:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.class.aspx

如果这还不够具体,您可以检查错误集合中的单个错误。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.errors.aspx

根据这些信息,您可以决定是否重试。

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

https://stackoverflow.com/questions/3849942

复制
相关文章

相似问题

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