首页 > 数据库技术 > 详细

三层架构之基础篇(对数据库增删改查)

时间:2015-12-16 12:31:40      阅读:616      评论:0      收藏:0      [点我收藏+]

在上一篇中已经搭建好了一个三层架构的框架,现在使用三层架构来对数据库进行增删改查操作:

假设在数据库ItcastCater有一张表ManagerInfo,有如下几个字段

技术分享

 

我们知道在UI,BLL,DAL之间有数据的交互,所以我们传递的数据需要有一个类型,因为我们操作的是ManagerInfo表,所以咱们可以在Model这里建一个类名为ManagerInfo的类,在这里定义的属性需要和ManagerInfo表中的字段一一对应。我们知道DAL是处理和数据库相关的操作,出了这个层就不在有和数据库相关的代码,所以我们需要封装一个SqlHelper类,用于数据库的操作。可以封装成一个静态类,作为工具类使用。同时,我们现在处理的是ManagerInfo这个表,以后也会操作其他的表,遵循单一原则,所以需要在DAL中建一个专门处理ManagerInfo表的类ManagerInfoDal,相应的在BLL中需要一个处理ManagerInfo表业务逻辑的类ManagerInfoBll。到这里所有的准备工作已经完成。(注意:我们使用的数据库是SQLite,所以在数据库操作那部分用的都是SQLite自带的 类和对象)

1.查询操作:

从最底层DAL开始写起(SqlHelper):

技术分享
 1 public static class SQLiteHelper
 2     {
 3         //连接字符串 
 4         static string strConn = ConfigurationManager.ConnectionStrings["Cater"].ConnectionString;
 5         #region 查询数据 +DataTable GetList(string sql)
 6         /// <summary>
 7         /// 查询数据
 8         /// </summary>
 9         /// <param name="sql">查询字符串</param>
10         /// <returns></returns>
11         public static DataTable GetList(string sql)
12         {
13             //创建连接对象
14             using (SQLiteConnection conn = new SQLiteConnection(strConn))
15             {
16                 //创建桥接对象
17                 SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, conn);
18                 //创建表 对象
19                 DataTable table = new DataTable();
20                 //将数据 缓存到 表格中
21                 adapter.Fill(table);
22                 //返回数据
23                 return table;
24             }
25         } 
26         #endregion
27 }
查询数据

 接着是ManagerInfoDal类中查询代码

技术分享
 1 //由于出了DAL层就不允许有和数据库相关的代码,所以在这里返回的不是DataTable ,需要返回一个数据类型,在UI层接收时,使用面向对象来对数据进行操作
 2 public List<ManagerInfo> GetList()
 3 {
 4    DataTable table = SQLiteHelper.GetList("select * from managerinfo");
 5             List<ManagerInfo> list = new List<ManagerInfo>();
 6             foreach (DataRow row in table.Rows)
 7             {
 8                //对象初始化器
 9                 list.Add(new ManagerInfo()
10                 {
11                     Mid = Convert.ToInt32(row["mid"]),
12                     MName = row["mname"].ToString(),
13                     MPwd = row["mpwd"].ToString(),
14                     MType = Convert.ToInt32(row["mtype"])
15                 });
16             }
17             return list;
18     
19 }    
查询数据

ManagerInfoBll中查询数据库的代码:

技术分享
1 /// <summary>
2         /// 数据查询
3         /// </summary>
4         /// <returns></returns>
5         public List<ManagerInfo> GetList()
6         {
7             return miDal.GetList();
8         }
查询数据BLL

在前端调用的时候 只需要创建ManagerInfoBll对象,调用其查询数据方法即可。

//创建ManagerInfoBll对象,以后的调用都是通过这个对象进行的

ManagerInfoBll manager = new ManagerInfoBll();

//取得了查询的数据

List<ManagerInfo> list = manager.GetList();

//咱们可以对这个数据集进行使用了。

2.添加操作:

UI层向BLL发送请求,即向数据库添加数据,那么需要向BLL传递需要添加数据的数据模型

UI层代码:

//创建 一个ManagerInfo对象

ManagerInfo mi = new ManagerInfo();

mi.MName = txtName.Text.ToString();
mi.MPwd = txtPwd.Text.ToString();
mi.MType = rb1.Checked ? 1 : 0;

//将mi作为数据模型传给BLL

manager.Add(mi)

BLL层代码:

技术分享
1 public bool Add(ManagerInfo  mi)
2         {
3             return miDal.Insert(mi);
4         }
添加数据BLL

DAL层:首先会通过ManagerInfoDal层的代码,来调用SqlHelper中对数据库进行添加的代码

ManagerInfoDal类:

技术分享
 1 /// <summary>
 2         /// 插入数据
 3         /// </summary>
 4         /// <param name="mi">传入的数据模型</param>
 5         /// <returns></returns>
 6         public bool Insert(ManagerInfo mi)
 7         {
 8             string strSql = "insert into managerinfo (mname,mpwd,mtype) values(@mname,@mpwd,@mtype)";
 9             SQLiteParameter[] param = new SQLiteParameter[] 
10             { 
11                 new SQLiteParameter("@mname", mi.MName),
12                 new SQLiteParameter("@mpwd",MD5Helper.Md5(mi.MPwd)),
13                 new SQLiteParameter("@mtype",mi.MType) 
14             };
15             return SQLiteHelper.ExecuteNonQuery(strSql, param) > 0;
16         }
添加数据ManagerInfoDal

在这里使用了SqlParameter 这个参数类,可以避免SQL注入

 

 

 

 

 

三层架构之基础篇(对数据库增删改查)

原文:http://www.cnblogs.com/Susan-Liu/p/5050626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!