我有一些使用ODP.Net的代码
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);
}
然后我在生产服务器上收到以下错误。测试服务器没问题。
我不明白,因为它抱怨连接没有打开,但如果出现问题,我的Open
不会被Fill
调用。我还以为Fill
应该打开连接。
任何人都可以建议可能发生的事情吗?
更新:从评论中我尝试添加此问题但问题相同:
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:我已经在连接字符串中添加了日志记录和Validate Connection = true,我知道连接状态已打开,box命令已完成,适配器已创建且表已创建,它肯定是错误的填充
答案 0 :(得分:0)
您可以尝试安装latest version of ODP.Net,看看是否还有问题吗?您应该能够运行最新的ODP.Net,即使是较旧的Oracle DB(在您的情况下为10g)。
修改强>: 由于您仅限于特定的ODP.net版本,因此还需要尝试以下其他方法:
确保正确的Oracle文件夹位于系统路径的开头。例如,我在路径的开头有Oracle文件夹,就像这样(我在C:\ oracle \ ora11g中安装了ODP.net,我也安装了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;
我见过Oracle做奇怪事情的情况,如果路径不正确,将无法正常工作。
尝试重新安装您正在使用的特定ODP.net版本。这应该清理干净并希望解决您的问题。