编码过程中使用SqlDataReader 来操作数据库时,你是否每次在调用完你的数据库方法后,再手动调用方法或写代码关闭数据库联接呢?(呵呵 我以前是这样做的 见笑)
下面的方法可以完成解决此问题了,cmd.ExecuteReader的参数CommandBehavior.CloseConnection会自动帮你关闭与之相关联的conn
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
编码过程中使用SqlDataReader 来操作数据库时,你是否每次在调用完你的数据库方法后,再手动调用方法或写代码关闭数据库联接呢?(呵呵 我以前是这样做的 见笑)
下面的方法可以完成解决此问题了,cmd.ExecuteReader的参数CommandBehavior.CloseConnection会自动帮你关闭与之相关联的conn
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![](/Images/OutliningIndicators/InBlock.gif)
SqlCommand cmd = new SqlCommand();
![](/Images/OutliningIndicators/InBlock.gif)
SqlConnection conn = new SqlConnection(connectionString);
![](/Images/OutliningIndicators/InBlock.gif)
try
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/InBlock.gif)
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
![](/Images/OutliningIndicators/InBlock.gif)
// 给cmd.ExecuteReader加上参数CommandBehavior.CloseConnection会在cmd.ExecuteReader执行完后自动关闭与之相关联的conn
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
![](/Images/OutliningIndicators/InBlock.gif)
cmd.Parameters.Clear();
![](/Images/OutliningIndicators/InBlock.gif)
return rdr;
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/InBlock.gif)
catch
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/InBlock.gif)
conn.Close();
![](/Images/OutliningIndicators/InBlock.gif)
throw;
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/None.gif)