winform定时器问题

xxbaby_99 2005-06-14 08:25:47
各位高人,你们好,小妹想实现:程序运行后(开始运行时数据库是ok的),在运行过程中,数据库断连,等待一段时间数据库恢复了,这时程序可以自动恢复。
我是这样实现的:用一个winform定时器,设置interval=60000,当数据库断连后启动这个timer1,每一分钟去连接一下数据库,如果连接失败,通过try catch来捕获(证明数据库连接有问题),如果连接成功的话就可以正常运行。可是我发现,如果数据库断连1个小时,数据库恢复后,程序不能马上连上数据库,还一直能被 try catch到,数据库断连的时间越长,等待数据库连接后,程序正常恢复的时间就越长,小妹不太清楚,数据库恢复正常后,为什么程序检测到数据库恢复正常会有延时,为什么数据库断连的时间越长,等待数据库恢复正常后,程序检测到正常的时间就越长。
谢谢各位高人,快帮帮小妹吧,这个问题困扰了N天了。
...全文
290 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxbaby_99 2005-06-15
  • 打赏
  • 举报
回复
谢谢各位的帮忙:
现在都正常了,解决方法:如fangxinggood所言,设置pooling=false就可以了。
我是这样理解的不知对不对还请大家指点:
程序1分钟连接一次数据库,而connectionstring默认是开启连接池的,连接池的默认最大值为100,当数据库断开时,程序中close掉这个连接,但连接池还未释放此连接,等下一分钟到来时,connection.open时就会在连接池中查找可用的连接,结果没有查到就又创建了一个新的连接,周而复始,连接池中的连接个数超出100个,数据库恢复正常后,再去连接时,连接池中已满,所以仍会返回tns:12535操作超时的提示,等待一段时间过后,连接池释放了没用的连接后,再去open时就可以恢复正常了,这就是为什么断开数据库的时间越长,数据库恢复正常的时间就越长的原因。
不知小妹理解的对不对,还请大家点评!!
再次感谢大家的帮忙
机器人 2005-06-14
  • 打赏
  • 举报
回复
你这种情况是不是和数据库连接池有关?禁用数据库连接池吧,默认是有连接池的。
xxbaby_99 2005-06-14
  • 打赏
  • 举报
回复
谢谢高人指点,可是当我try catch到后就关闭连接了。
zr1982930 2005-06-14
  • 打赏
  • 举报
回复
帮你顶!楼上的能说得在详细一点点嘛!
bitsbird 2005-06-14
  • 打赏
  • 举报
回复
要关闭连接的
掐死温柔 2005-06-14
  • 打赏
  • 举报
回复
呵呵
 这是个容易忽视问题,说来简单。操作数据库时,分为打开和关闭,打开一次数据库(OPEN)后,当你要结果时最好要程序控制关闭(CLOSE)它。这样就可以解决此类问题。
cdo 2005-06-14
  • 打赏
  • 举报
回复
帮你顶一下.
COpyFRee 2005-06-14
  • 打赏
  • 举报
回复
你以何方式去连接数据库?

每次连接后做完你要的操作就可以断开连接,比如将所需数据填充到本地的数据集中,这样你可以在本地对其做相应的操作,以后需要保存数据时做再次连接数据库的操作更新数据集。 而不是打开数据库后一直连接着,直到你全部处理完成后再关闭。
xxbaby_99 2005-06-14
  • 打赏
  • 举报
回复
还请高人们再指点指点

110,534

社区成员

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

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

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