如DBHelper类:
public static SqlDataReader ExtExecuteReader(string sql, params SqlParameter[] pams)
{
using(SqlConnection conn=DBHelper.Con)
{
SqlCommand cmd = new SqlCommand(sql, conn);
if (pams!=null && pams.Length>0)
{
foreach (SqlParameter par in pams)
{
cmd.Parameters.Add(par);
}
}
return cmd.ExecuteReader();
}
}数据交互类: public static IList<Modal.Grade> GetTreeData()
{
IList<Modal.Grade> list = null;
string sql = "select * from ext_grade";
//如果这样调用就会出现reader读取器尝试关闭出现异常
//原因是SqlConnection被释放后读取器讲同时失去数据
//SqlDataReader reader =DBHelper. ExtExecuteReader(sql,null);
SqlCommand cmd = new SqlCommand(sql, DBHelper.Con);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); while(reader.Read())
{
list = new List<Modal.Grade>();
Modal.Grade grade = new Modal.Grade();
grade.FCount = Convert.ToInt32(reader["FCount"].ToString());
grade.FParID = Convert.ToInt32(reader["FParID"].ToString());
grade.FName = reader["FName"].ToString();
grade.Fid = new Guid(reader["FID"].ToString());
grade.Id = reader["FID"].ToString();
list.Add(grade);
}
reader.Close();//同时可以释放sqlconneciton
return list;
}由于本人多次犯同样的错误 希望大家引以为戒
public static SqlDataReader ExtExecuteReader(string sql, params SqlParameter[] pams)
{
using(SqlConnection conn=DBHelper.Con)
{
SqlCommand cmd = new SqlCommand(sql, conn);
if (pams!=null && pams.Length>0)
{
foreach (SqlParameter par in pams)
{
cmd.Parameters.Add(par);
}
}
return cmd.ExecuteReader();
}
}数据交互类: public static IList<Modal.Grade> GetTreeData()
{
IList<Modal.Grade> list = null;
string sql = "select * from ext_grade";
//如果这样调用就会出现reader读取器尝试关闭出现异常
//原因是SqlConnection被释放后读取器讲同时失去数据
//SqlDataReader reader =DBHelper. ExtExecuteReader(sql,null);
SqlCommand cmd = new SqlCommand(sql, DBHelper.Con);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); while(reader.Read())
{
list = new List<Modal.Grade>();
Modal.Grade grade = new Modal.Grade();
grade.FCount = Convert.ToInt32(reader["FCount"].ToString());
grade.FParID = Convert.ToInt32(reader["FParID"].ToString());
grade.FName = reader["FName"].ToString();
grade.Fid = new Guid(reader["FID"].ToString());
grade.Id = reader["FID"].ToString();
list.Add(grade);
}
reader.Close();//同时可以释放sqlconneciton
return list;
}由于本人多次犯同样的错误 希望大家引以为戒
DBHelper这样写不行吗?
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString); try {
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch {
conn.Close();
throw;
}