基于三层架构项目下的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        }

总结:大致就是这样,谢谢学习,有哪里不懂的可以留言。

原文地址:https://www.cnblogs.com/wangjinya/p/10729745.html