1

我们客户的 Oracle 数据库位于远程,我通过 VPN 连接到它。我已经安装了所有用于连接到 Oracle DB 的软件(Oracle 客户端、Oracle 的 .Net 客户端等),我可以在应用程序的其他部分连接/使用数据库。所以这不是问题。

在这种情况下,我将数据加载到 DataTable 中。我使用以下函数,当查询返回 3-4k 记录时,它将数据加载到 DataTable 中。这需要几秒钟,但它有效。

我调用的用于执行 Sql 查询和检索 DataTable 的函数是

    /// <summary>Returns a DataTable based on input query</summary>
    /// <param name="sqlString">sql to execute</param>
    /// <returns>returns DataTable</returns>
    public DataTable ExecuteDataTable(String sqlString)
    {
        OpenConnection();
        DataTable tbl = new DataTable();
        _oracleCommand.CommandText = sqlString;

        try
        {
            using (OracleDataAdapter dbAdapter = new OracleDataAdapter(_oracleCommand))
                dbAdapter.Fill(tbl);                
        }
        catch (OracleException ex)
        {
            CloseConnection();
            throw new Exception(sqlString, ex);
        }
        finally
        {
            CloseConnection();
        }

        return tbl;
    }

但是当我尝试将数据加载到一个巨大的 DataTable 中时,它有点卡住了。要加载的记录大约为 140k,并且可以更多。查询不会返回任何内容。我等了大约 15-20 分钟的结果,但没有任何结果。它也不会抛出任何错误。

该程序只是停留在下一行。

dbAdapter.Fill(tbl);

有什么想法为什么?

问候, 阿米尔

4

0 回答 0