OracleDataAdapter.Fill“连接必须是打开”错误

问题描述:

我有一个使用ODP.NetOracleDataAdapter.Fill“连接必须是打开”错误

using (OracleConnection connection = new OracleConnection(connectionString)) 
{ 
    connection.Open(); 
    boxCommand = new OracleCommand(sql, connection); 

    OracleDataAdapter boxAdapter = new OracleDataAdapter(boxCommand); 
    DataTable boxTable = new DataTable();   

    boxAdapter.Fill(boxTable); 
} 

然后我得到低于生产服务器上的错误一些代码。测试服务器很好。

Error Image

我不明白它的抱怨不是打开的连接,但如果有问题就应该在点我Open发生不叫上Fill。无论如何,我还以为Fill应该打开连接。

任何人都可以提出可能会发生什么?

UPDATE:从意见我尝试添加这一点,但同样的问题:

using (OracleConnection connection = new OracleConnection(connectionString)) 
{ 
    connection.Open(); 
    while(connection.State != ConnectionState.Open) 
    { 
    connection.Close(); 
    connection.Open(); 
    } 
    boxCommand = new OracleCommand(sql, connection); 

    OracleDataAdapter boxAdapter = new OracleDataAdapter(boxCommand); 
    DataTable boxTable = new DataTable();   

    boxAdapter.Fill(boxTable); 
} 

更新2:我添加日志记录和验证连接= true来连接字符串和我知道的连接状态是否已打开,盒子命令已完成,已创建适配器并已创建表格,它在填充时肯定会出错

+0

你可以在调试信息中写出connection.State的值吗? – cadrell0 2012-04-03 15:27:09

+1

我希望这可以帮助[连接丢失,联系](是http://stackoverflow.com/questions/3370078/oracle-dataaccess-client-oracleexception-ora-03135-connection-lost-contact) – Steve 2012-04-03 15:31:16

+0

那是你的真实/实际代码,还是只是一个例子? (我怀疑这是一个装好的例子,因为'boxTable'会在没有被填充后使用的情况下松动范围。)我感觉代码片段中缺少一些细节... – CodingWithSpike 2012-04-03 15:37:24

您可以尝试安装latest version of ODP.Net并查看您是否仍然存在问题?你应该可以运行最新的ODP.Net,即使对于较旧的Oracle DB(在你的情况下为10g)。

编辑: 既然你限制到特定ODP.net版本,这里有一些其他的事情要尝试:

  • 确保正确的Oracle文件夹是在系统的开始路径。例如,我在我的路径开始处有Oracle文件夹,就像这样(我的ODP.net安装在c:\ oracle \ ora11g中,并且我还安装了Oracle 10g Express Edition,但请注意,ODP.net文件夹是第一

    C:\ ORACLE \ ora11g \产品\ 11.1.0 \的Client_1; C:\ ORACLE \ ora11g \产品\ 11.1.0 \的Client_1 \ BIN; C:\ ORACLE \ ORA10G \ BIN;

    我在哪里见过甲骨文做奇怪的事情,如果路径不正确将无法正常工作的情况。

  • 尝试重新安装所使用。这应该清理的东西了具体ODP.net版本希望能解决你的问题UE。

+0

我不能害怕。这里使用的DLL是10.2.0.100 – Jon 2012-04-03 15:29:02

+0

@Jon - 查看我的最新编辑的一些其他可能的提示。祝你好运。 – dcp 2012-04-03 16:07:45