当读取器关闭时调用读取的无效尝试(Reader.read()).为什么
本文关键字:读取 Reader read 为什么 调用 无效 | 更新日期: 2023-09-27 18:29:19
DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection("Data Source=NSIC;Initial Catalog=Dev;User ID=sa;Password=123456"))
{
// SqlDataAdapter adapter = new SqlDataAdapter("Select * from Employee", connection);
connection.Open();
//adapter.Fill(ds);
using (SqlCommand command = new SqlCommand("Select * from Employee", connection))
{
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read()) //Error is here
{
var table = new DataTable();
table.Load(reader);
ds.Tables.Add(table);
}
}
}
}
GridView1.DataSource = ds;
我正在尝试从数据sql服务器检索数据,但是while(Reader.read())
错误。
在 上关闭读取器时调用读取的尝试无效 while(Reader.read(((.
为什么?
这里的问题是你在while循环中使用了DataTable.Load。
while循环基本上说"虽然有更多的行",然后你调用加载所有行的DataTable.Load
,然后返回检查更多行。
相反,您可以简单地完全删除while
循环:
using (SqlDataReader reader = command.ExecuteReader())
{
var table = new DataTable();
table.Load(reader);
ds.Tables.Add(table);
}
我认为使用CommandBehavior.CloseConnection
会弄乱你的读者。
尝试像下面这样使用它;
using (SqlConnection connection = new SqlConnection("Data Source=NSIC;Initial Catalog=Dev;User ID=sa;Password=123456"))
using (SqlCommand command = new SqlCommand("Select * from Employee", connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
var table = new DataTable();
table.Load(reader);
ds.Tables.Add(table);
}
}
}