我目前的情况是我有一个非常大的记录集(200万条记录左右)我正在尝试使用.Net和Oracle.DataAccess.dll
库(版本2.112.2.0)从oracle数据库中查询
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess
......在我的程序中:
Dim conn As New OracleConnection()
... connect to DB, etc (this all works fine) ...
Dim strSQLQuery = (Query for large recordset)
Dim cmd = New OracleCommand(strSQLQuery, conn)
Using Reader As OracleDataReader = cmd.ExecuteReader()
...
End Using
现在,这个程序适用于较小的查询,但是对于这个大型查询,它似乎无限期地挂起(我已经等了一夜,然后最终退出程序)Using..
行并没有'甚至进入使用声明中的代码行......似乎根本没有做任何事情。
起初,我认为这可能是我的查询本身的问题,但是当我尝试使用SQL Navigator运行它时,它会在不到10分钟的时间内返回记录集...
我做错了吗?这是正常的吗?我可以设置一个设置让OracleDataReader
不挂?
另外,即使这个代码在VB中,我对C#同样感到满意。
答案 0 :(得分:0)
如果您尝试在不使用using语句的情况下创建阅读器,这可能听起来很愚蠢。在工作中,他们建议不要使用“使用”,因为当我们使用“使用”时,我们已经看到更大量的数据会发生不好的事情。因此,作为最佳实践,我们只需在新过程中创建读取器,使其范围在过程结束时结束。