加载后 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 但没有做任何有用的事情,所以它完成后没有任何东西可以加载。最简单的解决方案 - 就是删除这个循环。
我正在尝试使用 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 但没有做任何有用的事情,所以它完成后没有任何东西可以加载。最简单的解决方案 - 就是删除这个循环。