asp.net 中SqlDataReader 关闭 有关问题
asp.net 中SqlDataReader 关闭 问题
直接上代码
DbsqlHelper.cs中SqlDataReader
数据访问层 调用ExecuteReader 方法
DbsqlHelper.cs 中的SqlConnection 是否会自动关闭。
在sql服务器上 活动监视器中 一直会有 这个链接。
求解。
------解决方案--------------------
额 貌似花括号结束不是自动回收么。
------解决方案--------------------
把数据访问的数据都写在 using(){数据访问代码!}
这个会自动关闭连接
不知道是不是你说的意思?
------解决方案--------------------
那就再写一个关闭数据库的方法
private static void close_connection()
{
SqlConnection connection = new SqlConnection(DBconnstring);
if(connection.State==ConnectionState.Open)
connection.Close();
}
------解决方案--------------------
CommandBehavior.CloseConnection,数据库连接将在XXXDataReader对象关闭时自动关闭.
------解决方案--------------------
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
你也有这句。。。应该会在reader关闭时关闭这个connection的。。。
------解决方案--------------------
public static SqlDataReader ExecuteReader(string strSQL)
{
using (SqlConnection connection = new SqlConnection(DBconnstring))
{
if(connection.State==ConnectionState.Closed){
connection.open();
}
SqlCommand cmd = new SqlCommand(strSQL, connection);
try
{
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
}
catch (System.Data.SqlClient.SqlException E)
{
throw;
}
}
}
------解决方案--------------------
导致连接不能关闭的原因很多,这个CommandBehavior.CloseConnection在正常结束情况下是可以关闭连接的,但如果在没有结束前出现错误,一样也是关闭不了的。
直接上代码
DbsqlHelper.cs中SqlDataReader
- C# code
public static SqlDataReader ExecuteReader(string strSQL) { SqlConnection connection = new SqlConnection(DBconnstring); SqlCommand cmd = new SqlCommand(strSQL, connection); try { connection.Open(); SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return myReader; } catch (System.Data.SqlClient.SqlException E) { throw; } }
数据访问层 调用ExecuteReader 方法
- C# code
public string Get_WebMessage() { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 gonggao from webinfo;"); string str_Ggao = null; using (SqlDataReader Reader = DbsqlHelper.ExecuteReader(strSql.ToString())) { if (Reader.Read()) { str_Ggao = Reader["gonggao"].ToString(); } Reader.Close(); Reader.Dispose(); return str_Ggao; } }
DbsqlHelper.cs 中的SqlConnection 是否会自动关闭。
在sql服务器上 活动监视器中 一直会有 这个链接。
求解。
------解决方案--------------------
额 貌似花括号结束不是自动回收么。
------解决方案--------------------
把数据访问的数据都写在 using(){数据访问代码!}
这个会自动关闭连接
不知道是不是你说的意思?
------解决方案--------------------
那就再写一个关闭数据库的方法
private static void close_connection()
{
SqlConnection connection = new SqlConnection(DBconnstring);
if(connection.State==ConnectionState.Open)
connection.Close();
}
------解决方案--------------------
CommandBehavior.CloseConnection,数据库连接将在XXXDataReader对象关闭时自动关闭.
------解决方案--------------------
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
你也有这句。。。应该会在reader关闭时关闭这个connection的。。。
------解决方案--------------------
public static SqlDataReader ExecuteReader(string strSQL)
{
using (SqlConnection connection = new SqlConnection(DBconnstring))
{
if(connection.State==ConnectionState.Closed){
connection.open();
}
SqlCommand cmd = new SqlCommand(strSQL, connection);
try
{
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
}
catch (System.Data.SqlClient.SqlException E)
{
throw;
}
}
}
------解决方案--------------------
导致连接不能关闭的原因很多,这个CommandBehavior.CloseConnection在正常结束情况下是可以关闭连接的,但如果在没有结束前出现错误,一样也是关闭不了的。