如何使用C#从Oracle数据库中检索大数据?

时间:2011-01-10 21:02:03

标签: c# .net database oracle

我正在尝试从.NET中的Oracle数据库中检索大量数据。 我正在使用一个.NET DBDataReader,它可以正常处理少量数据但是当数据变得中等或大时,它会停止运行,我不知道为什么。 如何检索大量数据?

2 个答案:

答案 0 :(得分:0)

您应该尝试使用ODP.NET。这是为.NET编写的Oracle数据提供程序,它可以更好地优化与Oracle数据库的通信。

Microsoft弃用了Oracle客户端(System.Data.OracleClient)(http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx)并建议使用第三手工具。

<强>编辑:

Maby你应该看看这个类似的问题并回答:Big Performance Problems With Oracle DataReader in .Net

答案 1 :(得分:0)

好的,既然您期望与您的问题相关的答案信息非常少,那么回答这些问题将有助于 OTHERS 回答您的问题:

1-数据库中的数据类型是什么

2-您是如何尝试获取数据的(某些代码会有很多帮助)

3-是否有任何索引,表格有多大以及查询有多复杂,您是否尝试过优化它?尝试编写查询。

...


好的,这是你可以尝试告诉我们它是否改变了什么......

static void DownloadBlob(OracleConnection myConnection)
{
  OracleCommand myCommand = new OracleCommand("SELECT * FROM table", myConnection);
  myConnection.Open();
  OracleDataReader myReader = myCommand.ExecuteReader(System.Data.CommandBehavior.Default);
  try
  {
    while (myReader.Read())
    {
      //Obtain OracleLob directly from OracleDataReader
      OracleLob myLob = myReader.GetOracleLob(myReader.GetOrdinal("Ordinal"));
      if (!myLob.IsNull)
      {
        // I hope it is BLOB :)
      }
    }
  }
  finally
  {
    myReader.Close();
    myConnection.Close();
  }
}