ado.net如何实现自动重连

yfwill 2010-06-21 04:02:41
我的程序所在网络环境不好,经常长时间丢包.我使用ado.net如何实现自动重连?有没有例子
...全文
221 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
geminizane 2010-06-22
  • 打赏
  • 举报
回复
@_@
看不懂...继续努力...
yfwill 2010-06-22
  • 打赏
  • 举报
回复
有没有成型的代码呢?
狼王_ 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
using(SqlConnection conn=new SqlConnection(""))
{
if(sqlConn.State==ConnectionState.Closed)
{
conn.Open();
}
...
}
[/Quote]
据说这是微软推出的代替try...catch...finally的方法。效率应该比try...catch...finally效率高。
小_虎 2010-06-22
  • 打赏
  • 举报
回复
某mm,一段时间QQ离开的自动回复非常简洁——“不在!”
  于是出现了这样的聊天记录:
  ——在吗?
  ——不在!
  ——真不在?
  ——不在!
  ——问你件事情哦,你的初吻还在吗?
  ——不在!
  ——啊?那你的初夜还在吧?
  ——不在!
  ——你的贞操还在吗?
  ——不在!
  ——喂,你太过分了,你的廉耻心还在吗?
  ——不在!
  ……………………
  mm遂改自动回复…
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yfwill 的回复:]
我觉得应该是个常见的问题,为什么没有人解答呢?
[/Quote]
.net本身框架内所有ado.net的驱动的DbConnection都只是逻辑连接而已,没每一次数据库操作都要使用Open,这样逻辑连接就会复用底层物理连接,或者创建新的物理连接。因此这些根本不是你的编程所能看到的,你只是看到一个操作过程中抛出异常了(于是事务没有提交),然后用户再次执行操作又成功了。这个时候你要做的只是重新设计业务逻辑使得每一个数据库操作事务都很短(例如不超过2秒钟),你有怎么可能会仅仅纠缠于刚刚最初的一步“自动重连”?(难道你就不考虑重连以后做什么?)

不问这种问题,反而会编程。一旦多余考虑这些,反而不会了。
xiulinwang123 2010-06-22
  • 打赏
  • 举报
回复
没错,这是一个常见的问题,每个公司都可能会遇到,其实基本道理都是让它再连,也就是ADOConnection再次连一次就OK了,你可以放在异常中处理,也可以在任何你认为可能会断开的地方调用,不过有一点,Oracle数据库本身就有一个保持Session时间段的问题。所以你要经常保持这个Session在活动
yfwill 2010-06-22
  • 打赏
  • 举报
回复
我觉得应该是个常见的问题,为什么没有人解答呢?
hahajack 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guanghui_10 的回复:]
不懂,学习中。。。
[/Quote]
同样学习了 我觉得用实现判断状态比较好
guanghui_10 2010-06-21
  • 打赏
  • 举报
回复
不懂,学习中。。。
liubiao198421 2010-06-21
  • 打赏
  • 举报
回复
呵呵都是大师
wuyq11 2010-06-21
  • 打赏
  • 举报
回复
using(SqlConnection conn=new SqlConnection(""))
{
if(sqlConn.State==ConnectionState.Closed)
{
conn.Open();
}
...
}
LovingAlison 2010-06-21
  • 打赏
  • 举报
回复
楼上的代码确实实现了重新连接 但是TRY中的代码就不执行了
每次执行之前 先判断下状态 要是ConnectionState.Open 就直接执行操作 要不是 就连接后再去执行
使用连接池可以提高效率
捷哥1999 2010-06-21
  • 打赏
  • 举报
回复
你可以将打开数据库连接和读取数据的代码用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)
{
//外围异常处理
}
内容如下:
ado.net 概述
ado.net 的设计目标
ado.net 结构
.net 数据提供程序
ado.net dataset
为 .net 数据提供程序编写通用代码
ado.net 示例应用程序
使用.net数据提供程序访问数据
使用 ado.net 连接到数据源
执行命令
使用datareader检索数据
将存储过程用于命令
从数据库中获取单个值
从数据库中获取blob 值
执行数据库操作和修改数据
从sql server中以xml形式获取数据
从dataadapter填充 dataset
使用dataadapter和dataset更新数据库
向dataset添加现有约束
设置datatable和datacolumn映射
将参数用于dataadapter
输入和输出参数及返回值
自动生成的命令
使用dataadapter 事件
从数据库中获取架构信息
执行事务
.net数据提供程序的代码访问安全性
创建和使用 dataset
创建 dataset
向 dataset 添加 datatable
添加表间关系
导航表间关系
将 dataset 与现有数据一起使用
合并 dataset 内容
复制 dataset 内容
使用 dataset 事件
使用类型化的 dataset
xml 和 dataset
diffgram
从 xml 中加载 dataset
以 xml 数据形式编写 dataset
从 xml 中加载 dataset 架构信息
以xml架构(xsd)形式编写dataset架构信息
使 dataset 与 xmldatadocument 同步
嵌套的 datarelation
从xml架构(xsd)生成dataset关系结构
将xml架构(xsd)约束映射到dataset 约束
从xml架构(xsd)生成dataset关系
了解约束和关系之间的相互关系
从xml推断dataset关系结构
创建和使用数据表
创建数据表
定义数据表的架构
在数据表中操作数据
创建和使用dataview
创建dataview
使用dataview对数据排序和筛选
使用dataview查看数据
使用dataview修改数据
使用dataview事件
使用dataviewmanager设置默认表视图据
ado.net访问ado记录集或记录
ado.net方案示例
检索“标识”或“自动编号”值
开放式并发
从 xml web services 使用 dataset
查询结果分页
实现.net数据提供程序
.net 数据提供程序实现入门
实现连接
实现命令
实现 datareader
实现 dataadapter
示例 .net 数据提供程序
数据集
数据集介绍
用于创建数据集的visual studio工具
用组件设计器创建类型化数据集
用表达式创建数据集列
将表添加到现有数据集
将现有类型化数据集添加到窗体或组件
将非类型化数据集添加到窗体或组件
演练:将数据源表映射到数据集表
数据适配器
数据适配器介绍
数据适配器命令中的参数
数据适配器中的表映射
创建数据适配器
为数据适配器配置参数
将数据源列映射到数据集数据表列
预览数据适配器的结果
数据连接
sqlconnection 概述
sqlcommand 概述

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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