ado.net如何实现自动重连 我的程序所在网络环境不好,经常长时间丢包.我使用ado.net如何实现自动重连?有没有例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以将打开数据库连接和读取数据的代码用try ....catch finally抱起来,在catch异常后,再次连接!try{ sqlConn.open(); while(notEnd)//你要在循环中设置结束条件 { try{ //...read data from sqlConn } catch(Exception ex) { if(sqlConn.State!=ConnectionState.Open) sqlConn.Open(); } }}catch(Exception ex){ //外围异常处理} 楼上的代码确实实现了重新连接 但是TRY中的代码就不执行了每次执行之前 先判断下状态 要是ConnectionState.Open 就直接执行操作 要不是 就连接后再去执行 使用连接池可以提高效率 using(SqlConnection conn=new SqlConnection("")){ if(sqlConn.State==ConnectionState.Closed) { conn.Open(); }...} 没错,这是一个常见的问题,每个公司都可能会遇到,其实基本道理都是让它再连,也就是ADOConnection再次连一次就OK了,你可以放在异常中处理,也可以在任何你认为可能会断开的地方调用,不过有一点,Oracle数据库本身就有一个保持Session时间段的问题。所以你要经常保持这个Session在活动 .net本身框架内所有ado.net的驱动的DbConnection都只是逻辑连接而已,没每一次数据库操作都要使用Open,这样逻辑连接就会复用底层物理连接,或者创建新的物理连接。因此这些根本不是你的编程所能看到的,你只是看到一个操作过程中抛出异常了(于是事务没有提交),然后用户再次执行操作又成功了。这个时候你要做的只是重新设计业务逻辑使得每一个数据库操作事务都很短(例如不超过2秒钟),你有怎么可能会仅仅纠缠于刚刚最初的一步“自动重连”?(难道你就不考虑重连以后做什么?)不问这种问题,反而会编程。一旦多余考虑这些,反而不会了。 某mm,一段时间QQ离开的自动回复非常简洁——“不在!” 于是出现了这样的聊天记录: ——在吗? ——不在! ——真不在? ——不在! ——问你件事情哦,你的初吻还在吗? ——不在! ——啊?那你的初夜还在吧? ——不在! ——你的贞操还在吗? ——不在! ——喂,你太过分了,你的廉耻心还在吗? ——不在! …………………… mm遂改自动回复… 据说这是微软推出的代替try...catch...finally的方法。效率应该比try...catch...finally效率高。 WCF可以做网站吗?? treeview打开新窗体时焦点问题 棘手 怎么发布成wcf的svc文件? c#2.0+sql2005 程序的安装部署 C#里的函数能够返回两上值吗?? 100分 急寻《c#入门经典》这本书最后3章的2个案例和一个范例的源代码! 马上就可以给分! 有没有窗体绘图控件,在窗体上绘制图形和连线? 当前线程A创建另一个线程B后,怎样让线程A等待直到线程B完成? 关于语音聊天室 请问数据显示为每行4条记录并排显示用什么控件好? 求一正则表达式 vs05发布后直接安装,装到哪里去了?
try
{
sqlConn.open();
while(notEnd)//你要在循环中设置结束条件
{
try{
//...read data from sqlConn
}
catch(Exception ex)
{
if(sqlConn.State!=ConnectionState.Open)
sqlConn.Open();
}
}
}
catch(Exception ex)
{
//外围异常处理
}
每次执行之前 先判断下状态 要是ConnectionState.Open 就直接执行操作 要不是 就连接后再去执行
使用连接池可以提高效率
{
if(sqlConn.State==ConnectionState.Closed)
{
conn.Open();
}
...
}
于是出现了这样的聊天记录:
——在吗?
——不在!
——真不在?
——不在!
——问你件事情哦,你的初吻还在吗?
——不在!
——啊?那你的初夜还在吧?
——不在!
——你的贞操还在吗?
——不在!
——喂,你太过分了,你的廉耻心还在吗?
——不在!
……………………
mm遂改自动回复…