C#報錯提示
阿新 • • 發佈:2018-12-13
閱讀器關閉時嘗試呼叫 MetaData 無效
while (reader2.Read())
{
// Console.WriteLine("{0},{1},{2}",reader[0],reader[1],reader[2])
Console.WriteLine("{0},{1},{2}", reader["id"], reader["age"], reader["name"]);
}
//前面的reader關閉了,現在還在嘗試呼叫
已有開啟的與此 Command 相關聯的 DataReader,必須首先將它關閉
原因:
SqlCommand在每次執行ExecuteNonQuery()方法之後,內部會生成一個空的DataReader物件,該物件只有在資料庫連線關閉之後,才會被釋放掉
解決辦法
資料庫連線字串中新增MultipleActiveResultSets=true 且 保證每次執行cmd.ExecuteReader()時cmd名字不同,就不會報錯
SqlDataReader reader = cmd1.ExecuteReader(); while(reader.Read()) { // Console.WriteLine("{0},{1},{2}",reader[0],reader[1],reader[2]) Console.WriteLine("{0},{1},{2}", reader["id"], reader["age"], reader["name"]); } SqlDataReader reader2 = cmd1.ExecuteReader(); //必須建一個cmd2, SqlDataReader reader2 = cmd2.ExecuteReader();