您的位置:首页 > 运维架构 > 网站架构

(11)C#之ADO.NET 初始三层架构的DAL层

2015-10-23 13:11 501 查看
◇三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。                   (以上来自百度百科“三层架构”)

◇我个人的理解是,每一层都实现自己的功能,然后相互调用,最后使得代码更加方便的管理。

◇例如:我们可以把对数据库的操作代码(例如一些select 或者insert语句写在DAL层的一个方法中,然后在调用它们)。接下来我就来详细分析这个例子:

①前提说明:数据库中有一张表,有三个字段。然后我们新建一个名为DALWindow的窗口,放上来个Button控件,一个叫做insert,一个叫做selcect,如下图:





②为了方便进行获取以及赋值,我们需要申请一个定义Person类:

class Person
{
public string Name { get; set; }
public int? Age { get; set; }
public int Height { get; set; }
}


◇注意这个的int?类型,应该与数据库中的可控字段对应。

③然后新建一个名为DAL.cs的类作为数据访问层:

一、这里先写下插入数据的数据访问层的代码:

public static object ToDBValue(object value)
{
if (value == null)
{
return DBNull.Value;
}
else
{
return value;
}
}

public static int DALInsert(Person person)
{
int i = SqlHelper.ExecuteNonQuery("Insert into T_Person values (@name,@age,@height)",
new SqlParameter("@name",ToDBValue(person.Name)),
new SqlParameter("@age",ToDBValue(person.Age)),
new SqlParameter("@height",person.Height));
return i;
}


◇其中,ToDBValue()方法是用来处理把我们要插入的null类型转换成数据库中可识别的NULL类型的。

然后在insert的Click事件中调用这个静态方法:

private void button1_Click(object sender, RoutedEventArgs e)
{
Person p1 = new Person();
p1.Height = 1800;
int i=  DAL.DALInsert(p1);
MessageBox.Show("成功插入"+i.ToString()+"条数据");
}


◇大家可以看出,这时候在这个Click事件中,代码就显得格外简单,而且没有任何关于数据库的插入语句以及一些ADO.NET对象。直观明了。

    二、然后再来写查询数据的数据访问层的代码:

     public static object FromDBValue(object value)
{
if (value == DBNull.Value)
{
return value = null;
}
else
{
return value;
}
}

public static Person DALSelectByHeight(int height)
{
Person person = new Person();
DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Person where Height = @height",
new SqlParameter("@height",height));

if (dt.Rows.Count == 1)
{
foreach (DataRow dr in dt.Rows)
{
person.Age = (int?)FromDBValue(dr["Age"]);
person.Name = (string)FromDBValue(dr["Name"]);
person.Height = (int)FromDBValue(dr["Height"]);
}
return person;
}
else
{

person.Name = "000";
person.Height = 000;
person.Age = 000;
return person;
}

}


◇FromDBValue方法是用来判断和获取数据库中的NULL类型以转化成代码可识别的null类型。

    然后就是select按钮的Click事件:

private void button2_Click(object sender, RoutedEventArgs e)
{

Person p1 =  DAL.DALSelectByHeight(123);
MessageBox.Show(p1.Age.ToString());
}


◇这样就完成了,查询和插入数据的DAL分层编写。

◇在很小的项目中,看似步骤很麻烦,效率很低。但是在大的项目中,这是必须这样做的,才能准确的修改查看代码。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: