SQL ODBC适配器内存不足异常

Ber*_*eer 0 c# sql odbc out-of-memory sqldataadapter

我使用odbc适配器和数据集连接并从IBM的I Series AS400数据库接收数据.

我有一个odbc连接,如下所示:

OdbcCommand cmd = new OdbcCommand(queryString, conn);           // Set Active Query
OdbcDataAdapter rt = new OdbcDataAdapter(queryString, conn);    // Active Data Transfer
DataSet ds = new DataSet();                                     // Create DataSet
rt.SelectCommand.CommandTimeout = 180;                          // Set Command Timeout
rt.Fill(ds);                                                    // Transfer All Data
var reader = ds.CreateDataReader();                             // Create Reader
reader.Read();                                                  // Read
while (reader.Read()) { ... }
Run Code Online (Sandbox Code Playgroud)

它奇怪地给了System.OutOfMemoryException网上rt.Fill(ds);

如果有10亿行,包含130列会导致此错误吗?

如何避免此错误并收到我想要的数据?

chu*_*e x 5

如果有10亿行,包含130列会导致此错误吗?

这似乎是很多数据,可能会导致错误.

如何避免此错误并收到我想要的数据?

你应该DataReader直接使用,绕过DataSet.如果这样做,DataReader将仅加载一行数据,仅在您调用时获取下一行Read.

OdbcCommand cmd = new OdbcCommand(queryString, conn); // Set Active Query
conn.Open();                          // You may not need this if already open
var reader = cmd.ExecuteReader();     // Create Reader
while (reader.Read()) { ... }         // Process records, one at a time
reader.Close();                       // Close Reader after use
Run Code Online (Sandbox Code Playgroud)

更多信息:

MSDN上的OdbcDataReader类

对比ADO.NET DataReader和DataSet