通过odbc,如何判断网络连接一断开

zhang030219 2007-08-14 09:47:51
通过odbc连接,向后台发送一条sql语句,失败了.我想知道错误的原因是不是由于网络断开了.通过aerror(laerroy)函数得到错误信息,可我不能确认到底是以哪个值来判断,我试了不同的数据库,得到一系列的值laerror(4),laerror(5).请问有没有较权威的文档说明,判断错误信息返回值就能知道是否是网络连接断开了。
...全文
515 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2007-08-14
  • 打赏
  • 举报
回复
如果已经连接成功了,然后在执行其他过程中不知什么原因断开,是可以判断 断开了。

用帖主的方法或我的自定义函数均可。


这里是什么原因断开先不要管它。
wwwwb 2007-08-14
  • 打赏
  • 举报
回复
实际上上次已经说过,无法判断是网络的问题还是SQL语句的问题。
十豆三 2007-08-14
  • 打赏
  • 举报
回复
不过用我在你这个帖子
http://community.csdn.net/Expert/topic/5701/5701839.xml

中帖出的捕获ODBC错误也是可以的。

连接SQL SERVER后,手动停止SQL SERVER服务或断开网络,用我的自定义函数捕获的错误:

错误代号:1526
错误信息:连接错误: [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SQL Server 不存在或访问被拒绝
十豆三 2007-08-14
  • 打赏
  • 举报
回复
用10054可以判断与数据库的连接肯定是断开了。


查了MSDN上的10054错误号说明:WSAECONNRESET (10054)

Connection reset by peer.

A existing connection was forcibly closed by the remote host. This normally results if the peer application on the remote host is suddenly stopped, the host is rebooted, or the remote host used a "hard close" (see setsockopt for more information on the SO_LINGER option on the remote socket.)

也就是说,一个连接被对方重设。一个建立的连接被远程主机强行关闭,若远程主机上的进程异常终止运行(由于内存冲突或硬件故障),或者针对套接字执行了一次强行关闭,便会产生10054错误。针对强行关闭的情况,可用SO_LINGER套接字选项和setsockopt来配置一个套接字。

zhang030219 2007-08-14
  • 打赏
  • 举报
回复
十豆三朋友,我现在想如何能够判断是否是网络断开了,因为我程序里面有写log的操作(后台数据库),每次sql语句失败都会要写log,这样就造成了死循环了,所以我必须要知道是否是断开连接了,如果是断开连接了,我就不能再写log了
十豆三 2007-08-14
  • 打赏
  • 举报
回复
还是上次那个问题吧。

其实谁也不知道是什么原因失败了,就像QQ登录不成功,出来一些报告,可能是这个,可能那个,等等,QQ也不敢主死就是网络断开了。

所以你要发布产品中,建议这样:

可能是以下几种原因:
1、....
2、....
3、....
zhang030219 2007-08-14
  • 打赏
  • 举报
回复
通过返回的一些错误号,应该能判断是否断开连接,只是没有相应的官方的文档来证实。所以一直不敢发布到产品中去。
zhang030219 2007-08-14
  • 打赏
  • 举报
回复
非常感谢十豆三及wwwwb,我其实不要知道它是什么原因断开的,我只要知道是断开就行了。按十豆三朋友说的,我只要判断是odbc的错且错误号是10054,就可以判定是网络连接断了,同理可以判断其他的数据库类型了.
《C#程序开发范例宝典》(09章)的源码 第9章 数据库技术 355   9.1 连接Access数据库 356   实例254 连接Access数据库 356   实例255 连接加密的Access数据库 357   实例256 自动识别Access 2000数据库路径 358   实例257 连接网络上共享的Access 2000数据库 360   9.2 连接SQL Server数据库 361   实例258 使用ODBC DSN连接SQL Server数据库 361   实例259 使用ODBC非DSN连接SQL Server数据库 364   实例260 使用OLE DB连接SQL Server数据库 365   实例261 建立SQL Server数据库连接 366   9.3 连接其他数据库 367   实例262 连接Excel 367   实例263 连接Oracle数据库 368   9.4 数据库结构的读取与修改 369   实例264 读取SQL Server数据库结构 369   实例265 修改SQL Server数据库结构 372   9.5 数据录入 374   实例266 利用数据绑定控件录入数据 374   实例267 使用ADO NET对象录入数据 376   实例268 利用SQL语句录入数据 379   实例269 利用存储过程录入数据 380   9.6 图片存取技术 383   实例270 使用存取文件名的方法存取图片 383   实例271 使用ADO NET对象向SQL Server数据库存入图片 384   9.7 数据修改 387   实例272 利用数据绑定控件修改数据 387   实例273 利用数据对象修改数据 390   实例274 利用SQL语句修改数据 391   实例275 利用存储过程修改数据 393   9.8 数据保存前判断 395   实例276 判断输入数据是否符合要求 395   实例277 通过存储过程实现自动编号 398   9.9 数据删除 401   实例278 删除表格中指定的记录 401   实例279 利用SQL语句删除数据 402   9.10 数据记录 403   实例280 分页显示信息 403   实例281 移动记录 404   9.11 数据维护 406   实例282 在C#中分离SQL Server数据库 406   实例283 在C#中附加SQL Server数据库 407   实例284 在C#中附加单文件SQL Server数据库 409   9.12 数据备份恢复 410   实例285 备份SQL Server数据库 410   实例286 还原SQL Server数据库 413   9.13 管理系统开发相关 415   实例287 开启SQL Server数据库 415   实例288 断开SQL Server数据库与其他应用程序的连接 417   实例289 带图像列表的系统登录程序 419   实例290 利用SQL语句执行外围命令 420   实例291 系统初始化 421
第9章 数据库技术 355
9.1 连接Access数据库 356
实例254 连接Access数据库 356
实例255 连接加密的Access数据库 357
实例256 自动识别Access 2000数据库路径 358
实例257 连接网络上共享的Access 2000数据库 360
9.2 连接SQL Server数据库 361
实例258 使用ODBC DSN连接SQL Server数据库 361
实例259 使用ODBC非DSN连接SQL Server数据库 364
实例260 使用OLE DB连接SQL Server数据库 365
实例261 建立SQL Server数据库连接 366
9.3 连接其他数据库 367
实例262 连接Excel 367
实例263 连接Oracle数据库 368
9.4 数据库结构的读取与修改 369
实例264 读取SQL Server数据库结构 369
实例265 修改SQL Server数据库结构 372
9.5 数据录入 374
实例266 利用数据绑定控件录入数据 374
实例267 使用ADO.NET对象录入数据 376
实例268 利用SQL语句录入数据 379
实例269 利用存储过程录入数据 380
9.6 图片存取技术 383
实例270 使用存取文件名的方法存取图片 383
实例271 使用ADO.NET对象向SQL Server数据库存入图片 384
9.7 数据修改 387
实例272 利用数据绑定控件修改数据 387
实例273 利用数据对象修改数据 390
实例274 利用SQL语句修改数据 391
实例275 利用存储过程修改数据 393
9.8 数据保存前判断 395
实例276 判断输入数据是否符合要求 395
实例277 通过存储过程实现自动编号 398
9.9 数据删除 401
实例278 删除表格中指定的记录 401
实例279 利用SQL语句删除数据 402
9.10 数据记录 403
实例280 分页显示信息 403
实例281 移动记录 404
9.11 数据维护 406
实例282 在C#中分离SQL Server数据库 406
实例283 在C#中附加SQL Server数据库 407
实例284 在C#中附加单文件SQL Server数据库 409
9.12 数据备份恢复 410
实例285 备份SQL Server数据库 410
实例286 还原SQL Server数据库 413
9.13 管理系统开发相关 415
实例287 开启SQL Server数据库 415
实例288 断开SQL Server数据库与其他应用程序的连接 417
实例289 带图像列表的系统登录程序 419
实例290 利用SQL语句执行外围命令 420
实例291 系统初始化 421
ch1\Example_1_1 ---- 第1章的数据库管理系统; ch2\Example_2_2 ---- 第2章的使用IIS配置网站; ch3\Example_3_1 ---- 第3章的Access数据库; ch3\Example_3_4 ---- 第3章的SQL文件; ch4\TestOperateDB ---- 第4章中使用的SQL Server数据库TestOperateDB; ch4\Example_4_1~ Example_4_4 ---- 第4章中的连接到SQL Server数据库、使用ODBC连接数据源、使用OLEDB连接数据源、链接到Oracle数据库; ch5\Example_5_1~ Example_5_4 ---- 第5章中的使用ADO.NET操作数据库; ch6\Example_6_1~ Example_6_7 ---- 第6章中的显示数据库中的内容; ch7\Example_7_1~ Example_7_11 ---- 第7章中的使用ASP.NET操作数据库; ch8\Example_8_1~ Example_8_8 ---- 第8章中的断开式数据库访问; ch9\Example_9_1~ Example_9_5 ---- 第9章中的使用数据网格处理数据; ch10\Example_10_1~ Example_10_5 ---- 第10章中的网站计数器、用户留言版、用户管理、网上在线投票、动态聊天室; ch11\Example_11_1~ Example_11_18 ---- 第11章中的ASP.NET网络数据库开发,如上传文件和下载文件、读、写和删除文件、同时上传多个文件、发送邮件、处理数据库中图片、使用ASP.NET创建任意图形等; ch12\Example_12_1~ Example_12_27 ---- 第12章中的ASP.NET网络技术开发,如获取服务器和客户端信息、使用ASP.NET中的Passport验证、在ASP.NET中使用Windows登录、使用ASP.NET中的用户控件、使用ASP.NET中的自定义控件等; ch12\WindowsControl ---- 第12章的12.11节中的WindowsControl应用程序; ch12\WindowsService ---- 第12章的12.11节中的WindowsService Web服务; ch13\Example_13_1~ Example_13_5 ---- 第13章中的开发高效ASP.NET网络数据库,如使用Application、Session对象、数据缓存机制、禁用ViewState、ADO.NET中技巧、SQL层分析等; ch14\Example_14_2~ Example_14_5 ---- 第14章中的数据库安全和ASP.NET中的安全,如防止SQL注入攻击、使用信任连接、使用存储过程控制数据库的访问和使用ASP.NET中的Forms验证方式; ch14\DBSecurity ---- 第14章中的设置数据库的访问权限中的数据库; ch15\Example_15_1和chp15\WebSetup ---- 第15章中的Setup Wizard安装程序; ch15\Example_15_2和chp15\MyWebSetup ---- 第15章中的Web Setup安装程序; ch16\OfficeAuto ---- 第16章的办公自动化系统及其安装程序; ch16\OfficeAutoDB ---- 第16章的办公自动化系统的数据库。

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧