oracle commandtimeout,连接池和 Timeout expired异常解决方法
连接池和 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异常解决方法相关推荐
- 连接池和 Timeout expired异常
转自:博客园宁静.致远:http://www.cnblogs.com/zhangzhu/archive/2013/10/10/3361197.html 异常信息: MySql.Data.MySqlCl ...
- 连接池和 Timeout expired异常【转】
异常信息: MySql.Data.MySqlClient.MySqlException (0x80004005): error connecting: Timeout expired. The tim ...
- [译]连接池和 Timeout expired异常
原文标题:Connection Pooling and the "Timeout expired" exception FAQ 来源:http://blogs.msdn.com/a ...
- windows中Oracle服务连接不上错误排查及解决方法-实用
windows下Oracle连接不上问题排查思路 外部连接工具plsql,Navicat无法访问oracle数据库服务的排查思路 查看所访问oracle服务的所在服务器能否ping通,oracle服务 ...
- clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)
clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创) 参考文章: (1)clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原 ...
- C3P0 连接池获取的connection执行close() 方法是销毁连接还是释放资源归还连接至连接池?
C3P0 连接池获取的connection执行close() 方法是释放资源销毁连接还是释放资源归还连接至连接池? 如果你只是想要一个答案的话,可以很明确的说: 连接池的连接对象在执行clos()方法 ...
- activeMQ高并发发送消息异常解决方法
高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...
- lnk2019 mysql_C++使用MySQL-Connector/C++连接MySQL出现LNK2019错误的解决方法
C++使用MySQL-Connector/C++连接MySQL出现LNK2019错误的解决方法 使用vs2015开发c++win32项目时,用MySQL-Connector/c++连接MySQL时总是 ...
- oracle用户密码不被锁,Oracle用户密码过期和用户被锁解决方法【转】
[原因/触发因素] 确定是由于Oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. [影响和风险] 影响 密码过期后, ...
最新文章
- cin lt lt c语言,编写程序:从键盘输入n(0lt;nlt;100)个整数,计算并输出其中出现次数最多且数值最大的元...
- 从无到有写一个运维APP(三)完结篇
- java.util.regex_java.util.regex.PatternSyntaxException:索引附近的...
- php执行npm命令_npm系列之命令执行
- MaxCompute2.0 助力众安保险快速成长
- 【ES6(2015)】Generator
- data fastboot 擦除_fastboot擦除恢复等待设备【专业修复数据】
- PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
- Java语言基础1-关键字、标识符、常量和变量
- Java VisualVM无法检测到本地java程序 的 解决办法
- Oracle修复Win7/Win8.1/Win10下Java安装程序安全漏洞
- POJ NOI MATH-7649 我家的门牌号
- LintCode: Two Sum
- linux的源码安装步骤(以安装nginx为例)
- koa2异常处理_【HAVENT原创】KOA2 异常处理
- 电脑备份,电脑怎么备份系统,小白提供2种备份方法
- C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形
- Process finished with exit code 1 解决方法
- 企业微信机器人发送消息
- 哈尔滨工业大学21年计算机考研情况 学硕复录比超2:1?复试竞争激烈!
热门文章
- 创成汇创业赛事网站,2019参赛报名网站
- JS手机端touch事件计算滑动距离的方法
- Network Service
- 新一年最期望在公司从事哪些工作
- 简单CSDN爬虫,实现博客访问量记录
- 学计算机笔记本屏幕多大,14寸笔记本屏幕大小是多少
- 基于东北F4的设计模式情景剧——第一幕 装饰模式(Decorator Pattern)
- Godot3游戏引擎入门之十二:Godot碰撞理论以及KinematicBody2D的两个方法
- js 实现网页表格数据导出到Excel表
- 联拓生物宣布获得Infigratinib在中国大陆开展治疗针对伴有FGFR2基因扩增的局部晚期或转移性胃癌或胃食管结合部腺癌患者的2a期临床试验批件