调用SqlDataReader时的错误

来源:百度知道 编辑:UC知道 时间:2024/06/08 14:29:26
这是我的一个方法:
public List<string> position()
{
string sql = "select positionName from position";
SqlDataReader dr = SQLHelper.Position(sql);
List<string> list = new List<string>();
while (dr.Read())
{
list.Add(dr.GetString(0));
}
return list;
}

里面声明了一个SqlDataReader dr,并且调用了SQLHelper类的Position(sql)方法,这个方法的代码大致如下:
public static SqlDataReader Position(string sql)
{
using (SqlConnection con = new SqlConnection(ConnectionString))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader dr = null;
try
{
dr = cmd.ExecuteReader();
}
catch (Exception e)

SqlDataReader dr = SQLHelper.Position(sql);
string sql = "select positionName from position";
List<string> list = new List<string>();

//dr没有关闭

你可以试试
using(SqlDataReader dr = SQLHelper.Position(sql))
{
while (dr.Read())
{
list.Add(dr.GetString(0));
}
return list;
}

你调用DateReader时 没有关闭连接
在return前边关闭数据库连接就好了

public static SqlDataReader Position(string sql)
{
using (SqlConnection con = new SqlConnection(ConnectionString))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader dr = null;
try
{
dr = cmd.ExecuteReader();
return dr;
}
catch (Exception e)