连接状态关闭时,Ora-24309如何发生?

时间:2018-11-27 15:26:13

标签: c# oracle oracle11g odp.net

//I got a Connection which is kept alive..
IDbConnection con = CreatyMyOracleConnection();

//Later, if I want to use the connection i check if it's closed to (re-)open it.'
if (con.State == ConnectionState.Closed)
    con.Open() // Here OracleException 24309 is thrown

有时候我会得到:

  

ORA-24309“已连接到服务器”。

如果在打开前检查状态怎么办?

尝试/捕获似乎是一个丑陋的解决方案。我认为,应该有一种方法可以识别连接。 (重新)打开连接之前,我应该如何检查连接?

我当前正在使用不受管理的ODP.Net 11.2。

1 个答案:

答案 0 :(得分:1)

ConnectionState可以是

  • 破碎
  • 关闭
  • 连接
  • 执行
  • 获取
  • 打开

请参阅ConnectionState Enum

因此,您最好使用

if (con.State != ConnectionState.Open)
    con.Open();