这有点奇怪。我有两个Oracle数据库。一个是当地的。其他来自亚马逊。发生的事情非常奇怪。我正在使用C#。
当我在亚马逊数据库中执行最后一次查询1小时后,它会抛出一个新的OracleException
,它只发生在亚马逊数据库中。在我的本地数据库中,它让我随时打开一个连接,但它在第一次否认它并允许在第二次。此外,如果我使用try{} catch() {}
,它也不允许。我目前的代码:
private OracleConnection _oracleConnection = new OracleConnection(ConfigurationManager.ConnectionStrings["Oracle"].ConnectionString);
private void OpenConnection()
{
if (_oracleConnection.State != ConnectionState.Open)
_oracleConnection.Open();
}
public void MyAction(employer)
{
OpenConnection();
using (OracleCommand command = _oracleConnection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "proc_0001";
command.Parameters.Clear();
command.Parameters.Add("pi_employer_id, OracleDbType.Int32").Value = employer;
command.ExecuteNonQuery();
}
}
奇怪的是,如果我只是在短时间内执行它,它就可以了,但是如果我停留超过1小时而没有勾选Oracle,它会在OpenConnection()
和{&#39}中引发异常; m在按钮点击的情况下调用此方法,当我再次执行此操作时,在异常之后,我得到了我的结果。我开始认为甲骨文只是和我开玩笑。我在Oracle的字符串中看到了Oracle Documentation和C#Documentation以及Connection LifeTime/Connection TimeOut
,但他们要保持连接,我打开连接时遇到错误,就像我说的那样,只是在很长一段时间之后才开始第二次工作正常。我不想使用解决方法。你知道这是什么原因吗?
提前谢谢。