加载后 DataTable 不包含任何行

DataTable contain no rows after loading

我正在尝试使用 SQLDataReader 加载 DataTable,但它显示它没有行。我检查 reader 以查看它是否在 while 循环中正确计数,它是正确的,这意味着数据已从数据库中检索:

NpgsqlConnection sqlcon = new NpgsqlConnection(ConnectionString);
NpgsqlCommand sqlquerry = new NpgsqlCommand(sqlcmd, sqlcon);
sqlcon.Open();

NpgsqlDataReader reader = sqlquerry.ExecuteReader();

int i = 0;
while (reader.Read())
{
    i++;
}
DataTable dt = new DataTable();
dt.Load(reader);

var count = dt.Rows.Count;

您应该决定:您是使用 DataReader 的重复读取并在循环 while (reader.Read()) 中手动填充 table,还是使用 Load 填充 DataTable来自 DataReader 的方法,但不能同时使用这两个选项。

事实上,你的循环 "empties" datareader 但没有做任何有用的事情,所以它完成后没有任何东西可以加载。最简单的解决方案 - 就是删除这个循环。