string SQL="select * from AdministerInfo";
SqlConnection MyConntion= new SqlConnection (@"User ID=sa;Password=;Min Pool Size=0;Max Pool Size=1500;Data Source=127.0.0.1;Database=carclub");
SqlCommand MyCommand=new SqlCommand(SQL,MyConntion);
MyConntion.Open (); SqlDataReader MyDataReader= MyCommand.ExecuteReader(); if(MyDataReader.HasRows)
{
MyDataReader.Read();
}MyDataReader.Close();
MyConntion.Close();==========VS============
string SQL="select * from AdministerInfo";
SqlConnection MyConntion= new SqlConnection (@"User ID=sa;Password=;Min Pool Size=0;Max Pool Size=1500;Data Source=127.0.0.1;Database=carclub");
SqlCommand MyCommand=new SqlCommand(SQL,MyConntion);
MyConntion.Open (); SqlDataReader MyDataReader= MyCommand.ExecuteReader(); if(MyDataReader.HasRows)
{
MyDataReader.Read();
}//MyDataReader.Close(); 仅仅是就是缺少了这项
MyConntion.Close();
我测试了一下,发现内存空间没有太大变化,看MSDN上当您为了任何其他目的通过使用 SqlDataReader 来使用关联的 SqlConnection 时,必须显式调用 Close 方法。Close 方法将填写输出参数的值、返回值和 RecordsAffected,从而增加了关闭用于处理大型或复杂的查询的 SqlDataReader 所用的时间。其他目的是什么意思?
请问到底有没有SqlDataReader.Close()影响吗?
SqlConnection MyConntion= new SqlConnection (@"User ID=sa;Password=;Min Pool Size=0;Max Pool Size=1500;Data Source=127.0.0.1;Database=carclub");
SqlCommand MyCommand=new SqlCommand(SQL,MyConntion);
MyConntion.Open (); SqlDataReader MyDataReader= MyCommand.ExecuteReader(); if(MyDataReader.HasRows)
{
MyDataReader.Read();
}MyDataReader.Close();
MyConntion.Close();==========VS============
string SQL="select * from AdministerInfo";
SqlConnection MyConntion= new SqlConnection (@"User ID=sa;Password=;Min Pool Size=0;Max Pool Size=1500;Data Source=127.0.0.1;Database=carclub");
SqlCommand MyCommand=new SqlCommand(SQL,MyConntion);
MyConntion.Open (); SqlDataReader MyDataReader= MyCommand.ExecuteReader(); if(MyDataReader.HasRows)
{
MyDataReader.Read();
}//MyDataReader.Close(); 仅仅是就是缺少了这项
MyConntion.Close();
我测试了一下,发现内存空间没有太大变化,看MSDN上当您为了任何其他目的通过使用 SqlDataReader 来使用关联的 SqlConnection 时,必须显式调用 Close 方法。Close 方法将填写输出参数的值、返回值和 RecordsAffected,从而增加了关闭用于处理大型或复杂的查询的 SqlDataReader 所用的时间。其他目的是什么意思?
请问到底有没有SqlDataReader.Close()影响吗?
//Response.Write(SQL);
SqlConnection MyConntion= new SqlConnection (@"User ID=sa;Password=;Min Pool Size=0;Max Pool Size=1500;Data Source=127.0.0.1;Database=carclub");
SqlCommand MyCommand=new SqlCommand(SQL,MyConntion);
MyConntion.Open (); SqlDataReader MyDataReader= MyCommand.ExecuteReader(); if(MyDataReader.HasRows)
{
MyDataReader.Read();
}MyDataReader= MyCommand.ExecuteReader(); //加一句这个
//MyDataReader.Close();
MyConntion.Close();
便出现了错误:
已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。源错误:
行 26: }
行 27:
行 28: MyDataReader= MyCommand.ExecuteReader();
行 29: //MyDataReader.Close();
行 30: MyConntion.Close();
源文件: c:\inetpub\wwwroot\test\webform6.aspx.cs 行: 28 ====================
难道MSDN上说的“其他目的”指的是继续用MyDataReader进行另外一个数据库语句的操作??
SqlDataReader.ExecuteReader(CommandBehavior.CloseConnection)
这样connection关闭,SqlDataReader也关闭。