基于三层架构项目下的Ado【六】
一、基于三层架构项目下的Ado增删改查总结,提示:现在一般都是使用EF框架操作。
1. 先在model层创建出一个和你将会查询出一样类型的表,比如你将查询出的有五个字段,那么你就需要创建出一个和你查询出的对象一样五个字段的类。大致如下:
1 { 2 3 public class UserInfo 4 { 5 public int Id { get; set; } 6 public string UserName { get; set; } 7 public string UserPass { get; set; } 8 public DateTime RegTime { get; set; } 9 public string Email { get; set; } 10 } 11 }
2.1 . 在DAL(数据层) 新建类Sqlhelper用来查询数据,将查询出的数据暂时放在datatable中,但是前端不能解析datatable数据。因为该段代码是重复的,所以需要这样封装起来,直接看代码:
1 private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; 2 /// <summary> 3 /// 用来查询数据,将查询出的数据暂时放在datatable中,但是前端不能解析datatable数据 4 /// </summary> 5 /// <param name="sql">查询语句</param> 6 /// <param name="type">类型</param> 7 /// <param name="pars">需要传递的参数</param> 8 /// <returns></returns> 9 public static DataTable GetDataTable(string sql,CommandType type,params SqlParameter[]pars) 10 { 11 using (SqlConnection conn = new SqlConnection(connStr)) 12 { 13 using (SqlDataAdapter apter = new SqlDataAdapter(sql, conn)) 14 { 15 if (pars != null) 16 { 17 apter.SelectCommand.Parameters.AddRange(pars); 18 } 19 apter.SelectCommand.CommandType = type; 20 DataTable da = new DataTable(); 21 apter.Fill(da); 22 return da; 23 } 24 } 25 }
2.2 对datatable进行解析,并且执行以下操作,其实就是分为带参数的和不带参数的。其余只是把查询语句换一下即可
不带参数的查:
1 public List<UserInfo> GetList() 2 { 3 string sql = "select * from UserInfo"; 4 DataTable da = SqlHelper.GetDataTable(sql, CommandType.Text); 5 List<UserInfo> list = null; 6 if (da.Rows.Count > 0) 7 { 8 list = new List<UserInfo>(); 9 UserInfo userInfo = null; 10 foreach (DataRow row in da.Rows) 11 { 12 userInfo = new UserInfo(); 13 LoadEntity(userInfo, row); 14 list.Add(userInfo); 15 } 16 } 17 return list; 18 }
带参数的查:
1 public int AddUserInfo(UserInfo userInfo) 2 { 3 string sql = "insert into UserInfo(UserName,UserPass,RegTime,Email) values(@UserName,@UserPass,@RegTime,@Email)"; 4 SqlParameter[] pars = { 5 new SqlParameter("@UserName",SqlDbType.NVarChar,32), 6 new SqlParameter("@UserPass",SqlDbType.NVarChar,32), 7 new SqlParameter("@RegTime",SqlDbType.DateTime), 8 new SqlParameter("@Email",SqlDbType.NVarChar,32) 9 10 11 }; 12 pars[0].Value = userInfo.UserName; 13 pars[1].Value = userInfo.UserPass; 14 pars[2].Value = userInfo.RegTime; 15 pars[3].Value = userInfo.Email; 16 return SqlHelper.ExecuteNonquery(sql, CommandType.Text, pars); 17 18 }
3. BLL(业务层)调用
1 public List<UserInfo> GetList() 2 { 3 return UserInfoDal.GetList(); 4 5 }
总结:大致就是这样,谢谢学习,有哪里不懂的可以留言。