连接池和 timeout expired异常解决方法

你需要保证你每次调用连接的同时都在使用过后通过close()或dispose()对其执行了关闭.最简单的办法就是使用using,将你的连接泄漏方法修改成如下面的代码样式:

public void doesnotleakconnections()

{

using (sqlconnection sqlconnection1 = new sqlconnection("server=.sqlexpress ;integrated security=sspi;connection timeout=5")) {

sqlconnection1.open();

sqlcommand sqlcommand1 = sqlconnection1.createcommand();

sqlcommand1.commandtext = "raiserror ('this is a fake exception', 17,1)";

sqlcommand1.executenonquery();  //this throws a sqlexception every time it is called.

sqlconnection1.close(); //still never gets called.

} // here sqlconnection1.dispose is _guaranteed_

}

faq:

q:为什么要这样做

a:使用using结构等同于try/…/finally{ .dispose() ) 即使当executenonquery会抛出一个执行错误时,我们都可以保证finally模块将会执行

q:我上面的代码中如果没有异常抛出的话,我可以使用close()或dispose()吗

a:我们毫无顾忌地用他们中的任意一个,或两个同时使用.在一个已经close或dipose()的连接中使用close()或dispose()是不会影响的

q:close()和dispose()有什么不同,我应该用哪一个好?

a:它们做的是同一件事,你可以调用他们中的任意一个,或两个同时使用.

q:你所说的"practically the same thing”是什么意思?

a:dispose()将会通过sqlconnection来清理相关的连接,之后执行close().它们没有什么本质的区别,你可以通过reflector来证明这点

q:与close()相比,connection.dispose()会将连接些移除吗?

a:不会

---------------------------------------------------------------

我的分享:

针对"timeout expired"这个异常,我也查阅了很多资料。在国内我们很多project都会采用ms提供的sqlhelper这个封装类。因为这个类中有本身的缺陷所致,所以出现的"timeout expiered"异常机率大。我在国外的一篇文章中看到的解决方案是:

将sqlhelper中的cmd.commandtimeout="你要设置的秒数"加上去,重新编译.

if (trans != null)

cmd.transaction = trans;

cmd.commandtype = cmdtype;

cmd.commandtimeout = 240;

oracle commandtimeout,连接池和 Timeout expired异常解决方法相关推荐

  1. 连接池和 Timeout expired异常

    转自:博客园宁静.致远:http://www.cnblogs.com/zhangzhu/archive/2013/10/10/3361197.html 异常信息: MySql.Data.MySqlCl ...

  2. 连接池和 Timeout expired异常【转】

    异常信息: MySql.Data.MySqlClient.MySqlException (0x80004005): error connecting: Timeout expired. The tim ...

  3. [译]连接池和 Timeout expired异常

    原文标题:Connection Pooling and the "Timeout expired" exception FAQ 来源:http://blogs.msdn.com/a ...

  4. windows中Oracle服务连接不上错误排查及解决方法-实用

    windows下Oracle连接不上问题排查思路 外部连接工具plsql,Navicat无法访问oracle数据库服务的排查思路 查看所访问oracle服务的所在服务器能否ping通,oracle服务 ...

  5. clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)

    clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创) 参考文章: (1)clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原 ...

  6. C3P0 连接池获取的connection执行close() 方法是销毁连接还是释放资源归还连接至连接池?

    C3P0 连接池获取的connection执行close() 方法是释放资源销毁连接还是释放资源归还连接至连接池? 如果你只是想要一个答案的话,可以很明确的说: 连接池的连接对象在执行clos()方法 ...

  7. activeMQ高并发发送消息异常解决方法

    高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...

  8. lnk2019 mysql_C++使用MySQL-Connector/C++连接MySQL出现LNK2019错误的解决方法

    C++使用MySQL-Connector/C++连接MySQL出现LNK2019错误的解决方法 使用vs2015开发c++win32项目时,用MySQL-Connector/c++连接MySQL时总是 ...

  9. oracle用户密码不被锁,Oracle用户密码过期和用户被锁解决方法【转】

    [原因/触发因素] 确定是由于Oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. [影响和风险] 影响 密码过期后, ...

最新文章

  1. cin lt lt c语言,编写程序:从键盘输入n(0lt;nlt;100)个整数,计算并输出其中出现次数最多且数值最大的元...
  2. 从无到有写一个运维APP(三)完结篇
  3. java.util.regex_java.util.regex.PatternSyntaxException:索引附近的...
  4. php执行npm命令_npm系列之命令执行
  5. MaxCompute2.0 助力众安保险快速成长
  6. 【ES6(2015)】Generator
  7. data fastboot 擦除_fastboot擦除恢复等待设备【专业修复数据】
  8. PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
  9. Java语言基础1-关键字、标识符、常量和变量
  10. Java VisualVM无法检测到本地java程序 的 解决办法
  11. Oracle修复Win7/Win8.1/Win10下Java安装程序安全漏洞
  12. POJ NOI MATH-7649 我家的门牌号
  13. LintCode: Two Sum
  14. linux的源码安装步骤(以安装nginx为例)
  15. koa2异常处理_【HAVENT原创】KOA2 异常处理
  16. 电脑备份,电脑怎么备份系统,小白提供2种备份方法
  17. C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形
  18. Process finished with exit code 1 解决方法
  19. 企业微信机器人发送消息
  20. 哈尔滨工业大学21年计算机考研情况 学硕复录比超2:1?复试竞争激烈!

热门文章

  1. 创成汇创业赛事网站,2019参赛报名网站
  2. JS手机端touch事件计算滑动距离的方法
  3. Network Service
  4. 新一年最期望在公司从事哪些工作
  5. 简单CSDN爬虫,实现博客访问量记录
  6. 学计算机笔记本屏幕多大,14寸笔记本屏幕大小是多少
  7. 基于东北F4的设计模式情景剧——第一幕 装饰模式(Decorator Pattern)
  8. Godot3游戏引擎入门之十二:Godot碰撞理论以及KinematicBody2D的两个方法
  9. js 实现网页表格数据导出到Excel表
  10. 联拓生物宣布获得Infigratinib在中国大陆开展治疗针对伴有FGFR2基因扩增的局部晚期或转移性胃癌或胃食管结合部腺癌患者的2a期临床试验批件