gpt4 book ai didi

c# - 需要遍历 SQL 表行,一次一个(表太大而无法使用适配器。填充)

转载 作者:IT王子 更新时间:2023-10-28 23:38:43 25 4
gpt4 key购买 nike

对我来说阅读这样的小型 SQL Server 2005 表很容易:

string cmdText = "select * from myTable";
SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connection);
DataTable table = new DataTable();
adapter.Fill(table);

不幸的是,这种方法似乎将整个表加载到内存中,这根本不适用于我正在使用的巨大表。

我希望能够一次遍历表中的一行,这样一次只需要一行在内存中。大致如下:

foreach (DataRow row in rowIteratorObject)
{
// do something using the row

// current row goes out of scope and is no longer in memory
}

有点类似于您可以使用 StreamReader 一次处理一行文本文件,而不是一次读取所有文件。有谁知道用表格行来做到这一点(或者,如果我叫错了树,另一种解决方案)?

最佳答案

您应该使用 DataReader:

using( var connection = new SqlConnection( "my connection string" ) ) {
using( var command = connection.CreateCommand() ) {
command.CommandText = "SELECT Column1, Column2, Column3 FROM myTable";

connection.Open();
using( var reader = command.ExecuteReader() ) {
var indexOfColumn1 = reader.GetOrdinal( "Column1" );
var indexOfColumn2 = reader.GetOrdinal( "Column2" );
var indexOfColumn3 = reader.GetOrdinal( "Column3" );

while( reader.Read() ) {
var value1 = reader.GetValue( indexOfColumn1 );
var value2 = reader.GetValue( indexOfColumn2 );
var value3 = reader.GetValue( indexOfColumn3 );

// now, do something what you want
}
}
connection.Close();
}
}

关于c# - 需要遍历 SQL 表行,一次一个(表太大而无法使用适配器。填充),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com