网络中断情况下,如何update 数据库

问题描述

请教大家一个问题,程序每1分钟update下数据库,有没有办法在网络中断的情况下暂停update,等网络通后继续update?using(SqlConnectionconn=newSqlConnection(connstr)){conn.Open();if(conn.State==ConnectionState.Open){SqlCommandcmd=newSqlCommand("updateTB_GuajisetG_date='"+DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")+"',GJSC=GJSC+1whereid="+txtShuaID.Text,conn);cmd.ExecuteNonQuery();}else{tssl_GjZt.Text="当前网络中断,稍后重试...";}}

我代码是这样写的,但断网后,程序执行到conn.open这一步时报错。错误提示:ApplicationUnhandledException:在与SQLServer建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且SQLServer已配置为允许远程连接。

解决方案

本帖最后由 bh5768 于 2015-10-05 15:37:00 编辑
解决方案二:
trycatch,或者加入判断网络是否连通的功能
解决方案三:
中断后写本地数据库,恢复后本地数据库拷贝到远程
解决方案四:
open()函数放在try_catch语句块中,使用while循环判断网络是否连通,如果open没有抛出异常则代表连通,执行update操作,然后sleep(60*1000),否则跳过update操作直接sleep1分钟。再while循环判断
解决方案五:
trycatch咯,如果数据更新不了程序跑不下去就放到while里面罗,ifnot,扔到另一个线程里一直试,当前线程继续跑而且open时错,是不是你写的conn.state==xxx的那判断有点多余
解决方案六:
既然你捕获了ApplicationUnhandledException,那么你的进程就不会停止。你原来的程序如果是一分钟调用一次,那么ApplicationUnhandledException处理(例如记录日志)之后自然也还是继续地一分钟处理一次。你现在的程序已经实现了容错了继续处理了,只是自己不知道。
解决方案七:
多说一点设计方法问题:在开发和测试中,需要让异常尽早地显现出来,说通常会使用#if!DEBUGApplicationUnhandledException+=.......;#endif

这样的代码,让容错只在RELEASE版本才起作用。如果你在开发和测试、调试的时候就这样处理,那么就掩盖了问题,让程序导出都带病工作,就不能保证质量了。
解决方案八:
當SqlConnection.Open無法打開網路數據庫時會發生異常。所以你應該將它放在try_catch語句塊中,然後在catch中判定是否是由於無法連接到服務器所引發的異常,再進行處理。
解决方案九:
你原来的程序如果是一分钟调用一次-->你原来的操作过程如果是一分钟调用一次你捕获了ApplicationUnhandledException,这本身就是一种应用程序捕获和处理异常的模式。大多数程序只要在程序最外层(最高层、或者表现层)捕获异常即可,而不需要在底层写try...catch。
解决方案十:
引用5楼sp1234的回复:

既然你捕获了ApplicationUnhandledException,那么你的进程就不会停止。你原来的程序如果是一分钟调用一次,那么ApplicationUnhandledException处理(例如记录日志)之后自然也还是继续地一分钟处理一次。你现在的程序已经实现了容错了继续处理了,只是自己不知道。

请教一个问题:如果把数据库连接字符串放在webService里做常量,然后在winform里读取这个字符串可行不?这样是否安全?
解决方案十一:
引用9楼bh5768的回复:

Quote: 引用5楼sp1234的回复:
既然你捕获了ApplicationUnhandledException,那么你的进程就不会停止。你原来的程序如果是一分钟调用一次,那么ApplicationUnhandledException处理(例如记录日志)之后自然也还是继续地一分钟处理一次。你现在的程序已经实现了容错了继续处理了,只是自己不知道。

请教一个问题:如果把数据库连接字符串放在webService里做常量,然后在winform里读取这个字符串可行不?这样是否安全?

传入加密,程序读取后解密

时间: 2024-11-03 00:41:54

网络中断情况下,如何update 数据库的相关文章

广域网络时延情况下的流量

问题描述 广域网络时延情况下的流量 在局域网0.0XXms时延下,从客户端到数据库数据加载很正常:但一旦网络时延变为30ms时,整个加载就慢得不行. 请问各位大拿,如何通过网络监控,发现网络时延之后的问题所在,修复问题,保证流量.

请问xamarin种,如何打开数据链接(如果检测到没有网络的情况下)

问题描述 请问xamarin种,如何打开数据链接(如果检测到没有网络的情况下) 请问xamarin种,如何打开数据链接(如果检测到没有网络的情况下)thank in advance 解决方案 https://msdn.microsoft.com/zh-cn/magazine/mt147239.aspx

无物理网络的情况下,通过自己的物理机上浏览器访问虚拟机中的绿色tomcat服务器页面

问题描述 无物理网络的情况下,通过自己的物理机上浏览器访问虚拟机中的绿色tomcat服务器页面 如题,无物理网络的情况下,通过自己的物理机上浏览器访问虚拟机中的绿色tomcat服务器页面.请尽量详细 解决方案 虚拟机的网卡设置为host-only模式,这样虚拟机和主机就组成了一个"局域网".虚拟机用ipconfig查得ip,主机就可以用这个ip去访问了. 解决方案二: 安装tomcat的虚拟机,网卡设置成桥接模式,把虚拟机的ip地址和真机设置成同个网段,比如虚拟机是192.168.1.

解决-没有网络的情况下百度地图定位

问题描述 没有网络的情况下百度地图定位 在没有网络的情况下使用百度定位后程序崩掉了....求原因和解决办法~!

Google Now更新,在没有网络的情况下为用户显示之前加载完成的卡片

摘要: Google今天更新了Android平台上的Google Search,为Google Now增加了一项新特性,在没有可用网络的情况下为用户显示之前已经加载完成的卡片内容. 之前的Google Now在没有网络的情况下是非常 Google今天更新了Android平台上的Google Search,为Google Now增加了一项新特性,在没有可用网络的情况下为用户显示之前已经加载完成的卡片内容. 之前的Google Now在没有网络的情况下是非常恼人的,因为它会持续访问网络,而卡片流界面

Google Now更新,在没有网络的情况下为用户显示

摘要: Google今天更新了Android平台上的Google Search,为Google Now增加了一项新特性,在没有可用网络的情况下为用户显示之前已经加载完成的卡片内容. 之前的Google Now在没有网络的情况下是非常 Google今天更新了Android平台上的Google Search,为Google Now增加了一项新特性,在没有可用网络的情况下为用户显示之前已经加载完成的卡片内容. 之前的Google Now在没有网络的情况下是非常恼人的,因为它会持续访问网络,而卡片流界面

网络系统测试:单点故障情况下系统自动恢复时间

网络系统在出现单点故障情况下可快速恢复是高可靠网络设计的重点.恢复时间的要求在 各类行业和各网络层有差异.目前,网络系统平均恢复时间低于500ms已经逐步成为主流要求.与网络切换相关的各种组网模型故障模拟主要包括:链路故障.节点设备故障.单板故障.节点设备主备倒换.主备设备倒换.设备升级等.各类故障还需进一步细分, 例如节点设备故障包含:设备命令行执行软件重启,设备断电.设备上电.主备控板全部拔出/ 插入等等.为精确计算各类故障导致的网络中断/恢复时间,组网如图1所示,测试方法如下:498)th

如何在不增加投入的情况下让你的数据库快上200倍

几乎每个人都在以这样或那样的方式抱怨数据库的性能问题,数据库管理员和程序员时常要面临服务器资源不够用或数据库查询一直执行不完的情况.这些情况对我们来说太正常不过了. 解决办法多种多样,最典型的一种就是把枪口指向查询语句,并谴责程序员没能写出高效的查询.他们本可以使用恰当的索引和物化视图,或者写出更好的查询.你需要增加更多的节点来缓解这些压力.在某些情况下,你的服务器因执行太多低效的查询而过载,你会考虑为不同的查询设置不同的优先级,这样那些紧急的查询(比如CEO要求的查询)可以得到优先处理.如果你

数据库高并发情况下重复值写入的避免 字段组合约束_MsSql

10线程同时操作,频繁出现插入同样数据的问题.虽然在插入数据的时候使用了: insert inti tablename(fields....) select @t1,@t2,@t3 from tablename where not exists (select id from tablename where t1=@t1,t2=@t2,t3=@t3) 当时还是在高并发的情况下无效.此语句也包含在存储过程中.(之前也尝试线判断有无记录再看是否写入,无效). 因此,对于此类情况还是需要从数据库的根本