首页 新闻 会员 周边

C#连接Oracle超时控制

0
悬赏园豆:40 [已解决问题] 解决于 2016-03-04 11:39

在C#winform里面连接局域网内的Oracle数据库,在连接字符串里面已经加入了Connection Timeout=2,但若连接失败程序依然卡顿了差不多15秒后才有反应。
连接字符串图片

程序里面修改Connection Timeout成功图片

有精通的大神请求指点!谢谢!!

JDXZ的主页 JDXZ | 初学一级 | 园豆:128
提问于:2016-03-04 11:24
< >
分享
最佳答案
0

OracleConnection.ConnectionTimeout Property

这链接里面有一段话是这样的

Unlike the Connection object in the other .NET Framework data providers (SQL Server, OLE DB, and ODBC), OracleConnection does not support a ConnectionTimeout property. Setting a connection time-out either with a property or in the connection string has no effect, and the value returned is always zero. OracleConnection also does not support a Database property or a ChangeDatabase method.

 

而且关键问题不是靠修改这个Timeout来解决啊,你的ORACLE服务器咋了,能连接上吗?

局域网连接ORACLE需要15秒还是找下网管吧。

 

要不然还是看看哪儿出了问题。

收获园豆:40
爱编程的大叔 | 高人七级 |园豆:30839 | 2016-03-04 11:30

正常情况下是可以连接上的,我是想把程序做的稳定点,假如连接不上也不要等到15秒以后再提示,时间太长用户不知道状况。

意思是说Oracle的不支持修改timeout吗?您有没有好的建议呢

JDXZ | 园豆:128 (初学一级) | 2016-03-04 11:34

@JDXZ: 所有可能慢的操作,尽量异步进行。

爱编程的大叔 | 园豆:30839 (高人七级) | 2016-03-04 11:36
其他回答(2)
0

设置CommandTimeout=2

刘宏玺 | 园豆:14020 (专家六级) | 2016-03-04 11:34

我就是想在程序运行前测试数据库是否连接上,如果连接不上也不能等到15秒,那样太慢了。所以可能还没有涉及到数据库操作延迟~

支持(0) 反对(0) JDXZ | 园豆:128 (初学一级) | 2016-03-04 11:40
0

 本来想建议试一下Oracle.ManagedDataAccess这个Oracle提供的类库呢。但是看了一下里边的声明ConnectionTimeout已经重载成只读的了。

        [Browsable(false)]
        [DefaultValue(15)]
        [Description("")]
        public override int ConnectionTimeout { get; }

看来这个15是修改不了了。我想只能从界面上做个异步来优化用户体验了。或者还有个笨办法,定义一个变量数据库连接成功就修改一下,然后自己用timer计时,到了时间查一下变量,决定是否弹出失败提示并销毁连接。

于为源 | 园豆:956 (小虾三级) | 2016-03-05 15:00

对的,就是这样。谢了哈,不过分已经全部给了最佳答案了。。

支持(1) 反对(0) JDXZ | 园豆:128 (初学一级) | 2016-03-05 17:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册