Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#OracleDataAdapter访问数据库的替代方案_C#_Oracle_Datatable - Fatal编程技术网

C#OracleDataAdapter访问数据库的替代方案

C#OracleDataAdapter访问数据库的替代方案,c#,oracle,datatable,C#,Oracle,Datatable,我有其他人的C#代码从数据库中检索数据,如下所示: using (OracleConnection conn = new OracleConnection(connStr)) { conn.Open(); DataTable dTable = new DataTable(); using (OracleDataAdapter adapter = new OracleDataAdapte

我有其他人的C#代码从数据库中检索数据,如下所示:

            using (OracleConnection conn = new OracleConnection(connStr))
        {
            conn.Open();
            DataTable dTable = new DataTable();
            using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn))
            {
                adapter.Fill(dTable);
            }
        }
我对代码有两个顾虑

  • 由于SQL需要很长时间才能恢复,上面的代码需要运行20-30分钟才能完成,在此期间我无法监控其进度
  • 如果应用了另一个SQL并且结果集很大,DataTable真的可以处理它吗?我希望会发生OutOfMemory异常

  • 换言之,我正在寻找上述OracleDataAdapter/DataTable组合的替代方案,类似于Java中的旧但好的JDBC东西。我确信C语言中一定存在类似的东西,但我对C语言还很陌生,所以请有人给我一个指南或代码片段让我开始吧。

    任何运行20/30分钟的查询都有严重的问题。首先,我将查看您试图加载的内容,并检查是否可以对数据使用某些分页。对于执行时间,可能有很多原因,而且您尚未发布查询,因此很难判断。但一个很可能的原因是缺乏指数。至于DataAdapter/DataTable的替代方案,是的,但这完全取决于您如何使用结果。如果DataTable很大,则可能是内存不足错误。如果查询的结果集很大,则应该考虑分页。正如其他人所提到的,您可能也想检查查询的性能。有一些限制限制限制了我的手脚:我不能在SQL移交给我时更改它;我不能给它编制索引,因为我的理解是它会让DBA参与进来,这是不可能的。顺便问一下,我该如何分页?类似于使用SQL子句“rownum>10和rownum