问,关于sqlconnection的一个解决方法

问题描述

要实现功能:存在一个主服务器A,一个备用服务器B当服务器A出现问题(包括断网之类),我的程序自动切换数据库B。1、当服务器出现问题时,程序重启,并重新连接备用服务器B2、当服务器出现问题时,程序弹出友情提示框“服务器重新连接中”,然后重连思路:切换数据库连接字符串。通过改变数据库连接字符串可行是可行,不过有个问题就是,当我断开服务器A的连接的时候,我的程序会因为cn.Open();打开服务器连接的时候,进入卡死状态,点击会出现未响应状态。请问各位大大,有什么好的建议没有?万分感谢!

解决方案

解决方案二:
打开服务器连接之前判断sqlconnection的连接状态不就可以了。
解决方案三:
引用1楼duanzi_peng的回复:

打开服务器连接之前判断sqlconnection的连接状态不就可以了。

有判断,我写在了CheckConnection里面。可是总感觉那个连接状态并不那么好用。而且,cn.State应该只是显示当前状态,就算我服务器没有连上,它也只是出入closed的状态,没有说明是能打开的
解决方案四:
再补充一下,本来是想写在catch里面的,但是,就算在catch里面,cn.Open()还是会卡死整个程序,约等10-20秒左右才能catch到,而且听说当遇到异常的时候,catch是消耗大量系统资源?
解决方案五:
privatestaticOracleConnectionCreateConnection(){OracleConnectionres=null;vareh=newManualResetEvent(false);ThreadPool.QueueUserWorkItem(h=>{varconn=newOracleConnection(cnStr1);conn.Open();res=conn;eh.Set();});ThreadPool.QueueUserWorkItem(h=>{varconn=newOracleConnection(cnStr2);conn.Open();res=conn;eh.Set();});eh.WaitOne();returnres;}

解决方案六:
引用4楼sp1234的回复:

你可以类似这样写代码:privatestaticOracleConnectionCreateConnection(){OracleConnectionres=null;vareh=newManualResetEvent(false);ThreadPool.QueueUserWorkItem(h=>{varconn=newOracleConnection(cnStr1);conn.Open();res=conn;eh.Set();});ThreadPool.QueueUserWorkItem(h=>{varconn=newOracleConnection(cnStr2);conn.Open();res=conn;eh.Set();});eh.WaitOne();returnres;}

想知道一下大概原理

时间: 2024-10-03 00:00:46

问,关于sqlconnection的一个解决方法的相关文章

批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法

  mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看"windows 事件查看器",发现类似错误提示 Can't find messagefile 'F:\    ools\mysql\mysql-5.6.22-winx64\share\errmsg.sys', 但是配置似乎没问题: basedir=F:\tools\mysql\mysql-5.6.22-winx64datadir=F:\tools\mysql\mysql-5.6.22-win

各位大神啊,帮忙给看看,Mac10.11安装cocoapods出现这个问,网上都没有解决方法了

问题描述 各位大神啊,帮忙给看看,Mac10.11安装cocoapods出现这个问,网上都没有解决方法了

网页自动刷新,不产生嗒嗒声的一个解决方法_javascript技巧

网页自动刷新,不产生嗒嗒声的一个解决方法 不用XMLHTTP的.其实也很怪,不知微软是怎么处理的,我把定时刷新换个写法它就不出声了.现帖出来与大家共享.  刷新页面不要用那个meta标签中的refresh属性.用这个一定用声音的.大家只要加上这么一句话就可以了. .... 〈body onload="setTimeout('this.location.reload();',6000);"〉 ... 这样页面6秒一刷,但又没声音. 不用XMLHTTP的.其实也很怪,不知微软是怎么处理的,

过高分辨率导致电脑黑屏的一个解决方法

我用电脑的时候,一直习惯用1024*768这个分辨率,用着舒服,倒也没有出过什么问题. 姐姐家的孩子要学习电脑,这几天我晚上一直在家里教他一些基本的操作.昨晚出了个不大不小的问题,原因是我告诉他:你用右键点桌面"我的电脑",在对话框的"设置"那一页里用鼠标拖动上面的滚动条,可以调整显示器的分辨率,然后我就向后拖动了一下,点了"应用",结果电脑突然黑屏了,重启后依然是黑屏. 打电话请教认识的某朋友,告诉了我原因:你的显示器不行,太老,过高的分辨率支

MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)_Mysql

如果你想连接你的mysql的时候发生这个错误: 复制代码 代码如下: ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server 解决方法: 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从&

Chrome浏览器打不开网站或打开网站慢的一个解决方法

Chrome浏览器的一个默认设置,有时会导致一些网站打不开或者打开速度慢. 单击Chrome浏览器地址栏右侧的三个小点,"设置"→"显示高级设置"→"隐私设置",其中的"保护您和您的设备不受危险网站的侵害"这个选项默认是开启的,如下图: 选中了"保护您和您的设备不受危险网站的侵害"这个选项,会有一部分网页打不开或者打开慢的现象出现. 现在有很多种杀毒软件,并且都是免费的.如今,杀毒软件已经成为免费的公共基础

xp忘记密码的另一个解决方法

Windows XP启动脚本(startup scripts)是计算机在登录屏幕出现之前运行的批处理文件,它的功能类似于Windows 9×和DOS中的自动执行批处理文件autoexec.bat. 利用这个特性,可以编写一个批处理文件重新设置用户密码,并将它加入启动脚本中,这样就达到了目的. 以下是具体步骤(假设系统目录为C:\Windows). 1.使用Windows98启动盘启动电脑.编写一个能恢复密码的批处理文件a.bat,内容只需要一条"net user"命令即可:"

100分求一个解决方法,救命,在线急等!

问题描述 我昨天下了一个DXperience-7.2.5.exe但是一直都不能用,我求一个破解的方法,哪位大哥,能给我一个答案呢,再线等我是从这个页面下载的http://www.devexpress.com/Downloads/NET/DXperience/ 解决方案 解决方案二:7.2.1的完全有破解的.......我看功能差别也不会很大!解决方案三:能不能给一个详细点的下载地址呢.还有破解方法!解决方案四:http://download.csdn.net/source/269333http:

win7前置面板音频问题的一个解决方法

我的声卡是Realtek hd的,win7自带的驱动,后置音频插孔没有问题,前置面板的耳机和麦克风显示没有插入,更没有声音 装自己网上找到的最新的Realtek驱动(不是win7自动找的)后,重启,居然在任务栏或控制面板里面找不到高清晰音频管理器 ,所以更没法设置了 方法: 到C:\Program Files\Realtek\Audio\HDA中找到RtHDVCpl.exe (即高清晰音频管理器),右键以管理员身份打开,红色小喇叭终于弹出来了,然后设置成禁止前置面板检测,戴起耳机试音,有了,搞定