DataReader在检索大型记录集时挂起

时间:2014-02-24 19:04:49

标签: c# .net vb.net oracle datareader

我目前的情况是我有一个非常大的记录集(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#同样感到满意。

1 个答案:

答案 0 :(得分:0)

如果您尝试在不使用using语句的情况下创建阅读器,这可能听起来很愚蠢。在工作中,他们建议不要使用“使用”,因为当我们使用“使用”时,我们已经看到更大量的数据会发生不好的事情。因此,作为最佳实践,我们只需在新过程中创建读取器,使其范围在过程结束时结束。