与datatable作用相等,用于查询数据,不同为datatable将查询的数据加载到内存中,未对数据做处理筛选,sqldatareader逐行读取查询数据,只选取当前查询出的数据
using 加载完毕后关闭
和 close
用法
首先修改数据库连接类
public static SqlDataReader QueryRead(string sql, params SqlParameter[] sqlParameters)
{
SqlConnection conn = new SqlConnection(connst);
using (SqlCommand comm = new SqlCommand(sql, conn))
{
if (sqlParameters != null && sqlParameters.Count() > 0)
comm.Parameters.AddRange(sqlParameters);
conn.Open();
return comm.ExecuteReader(CommandBehavior.CloseConnection);//关闭
}
}
然后修改DAL
public static Administrator login(string name,string pwd)
{
string sql =$"select * from Administrator where AdministratorName=@name and AdministratorPwd=@pwd";
SqlParameter[] sqlParameters =
{
new SqlParameter("@name",name),
new SqlParameter("@pwd",pwd)
};
var reader = dbhelp.QueryRead(sql,sqlParameters);
if (reader.Read())
{
Administrator model = new Administrator();
model.AdministratorName =reader ["AdministratorName"].ToString();
model.AdministratorPwd = reader ["AdministratorPwd"].ToString();
model.AdministratorPower = reader ["AdministratorPower"].ToString();
model.AdministratorId = Convert.ToInt32(reader ["AdministratorId"]);
reader.Close();
return model;
}
else {
reader.Close();
return null;
}
}
}