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 server检索数据。但while(Reader.read())
上的错误。
关闭阅读器时无效尝试调用Read 而(Reader.read())。
为什么?
答案 0 :(得分:1)
这里的问题是您在while循环中使用DataTable.Load。
while循环基本上表示"虽然有更多行",然后你调用DataTable.Load
加载所有行,然后返回检查更多。
相反,您只需完全删除while
循环:
using (SqlDataReader reader = command.ExecuteReader())
{
var table = new DataTable();
table.Load(reader);
ds.Tables.Add(table);
}
答案 1 :(得分:0)
我认为使用 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);
}
}
}
会弄乱你的读者。
尝试使用如下所示;
private float spacing(WrapMotionEvent event) {
// ...
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (Float)Math.sqrt (x * x + y * y);
}