数据库访问层(Data Access Layer)又称为DAL层,有时候也称为是持久层,其功能主要是负责数据库的访问。简单地说就是实现对数据表的Select(查询)、Insert(插入)、Update(更新)、Delete(删除)等操作。如果要加入ORM的思想,就会包括对象和数据表之间的映射,以及对象实体的持久化操作。
- 中文名
- 数据访问层
- 外文名
- Data Access Layer
- 结构层数
- 3层
- 别 名
- DAL层
- 定 义
- 主要是负责数据库的访问
- 学 科
- 计算机技术
数据库访问层:又称为DAL层,有时候也称为是持久层,其功能主要是负责数据库的访问。简单地说就是实现对数据表的Select(查询)、Insert(插入)、Update(更新)、Delete(删除)等操作。如果要加入ORM的思想,就会包括对象和数据表之间的映射,以及对象实体的持久化操作。
讲到数据库访问层,不得不提下三层架构,通常会把应用系统划分为:表现层、业务逻辑层和数据库访问层。这样的设计目的是为了实现“高内聚,低耦合”的设计思想。数据库访问层在三层架构中只负责数据存储与读取。业务逻辑层作为数据库访问层的上层,内部调用数据库访问层提供的方法,来完成数据的存储与读取。数据库访问层与底层数据库应该是独立的,好的数据库访问层方案是能够在不修改程序代码功能的基础之上实现不同类型数据库的动态切换。我们比较熟悉的做法就是通过XML配置文件来完成底层数据库的切换。目前很多流行的数据库访问层框架都是采用这种方式来实现数据库的动态切换。数据访问层能够将应用程序中的数据持久化到存储介质中,通常我们使用的数据库都是关系型的数据库,采用的数据模型都是对象模型,这就需要数据库访问层实现对象模型与关系模型直接的、互相的转换。 [1]
三层结构为:
数据访问层DataAccessLayer用于数据库数据的读写操作,该层只包含一个类文件Database.CS。在该类文件中需要创建一些方法以完成建立数据库连接、向数据库提交SQL语句并返回相应的操作结果等功能。
添加类文件
在DataAccessLayer文件夹下添加新项,在“选择新项”对话框中选择模板为“类”给类文件命名为Database.CS,单击“添加”按钮。
引用命名空间
using System.Data.SqlClient;
类文件结构
将Database类的定义代码放在命名空间MessageBoard.DataAccessLayer的定义中,付码结构如下:
namespace MessageBoard.DataAccessLayer
{
public class Database
{
自定义方法()
{ }
}
}
在Database类中添加方法
(1)DBCon()方法
public static SqlConnection DBCon()
{
SqlCormection conrl=new SqlConnection(); //创建连接对象
conn.ConnectionString=“seerver=;database=db_ExamOnline;user id=sa;pwd=123456”;//建立连接字符串
retum coma;//返回连接对象
}
也可以用以下方法直接返回数据库连接字符串:
public static SqlConnection DBCon()
{
}
public DataSet GetDataSet(String sql)//形参sql接收传来的SQL语句
{
SqlConnection conn=DBCon0;
//定义一个SqlConnection类对象并得到连接字符串
conn.Open(); //打开数据库连接
//定义一个SqlDataAdapter类对象,获取SQL命令和连接
DataSet dataset=new DataSet(); //定义一个DataSet类对象
adapter.Fill(dataset); //向数据库提交SQL语句,将查询结果放入dataset中
conn.Close(); //关闭数据库连接
return dataset; //返回查询结果数据集
}
(3)ExecuteSQL(String)方法
功能:接收传来的SQL语句,执行非查询操作,完成将留言信息写到数据库中的操作。该方法的参数为字符串类型,代码如下:
{
SqlConnection conn=DBCon();
//定义一个SqlConnection类对象并得到连接字符串
conn.Open(); //打开数据库连接
SqlCommand cmd=new SqlCommand(sql,coma);
//定义一个SqlDataCommand类对象,获取SQL命令和连接
cmd.ExecuteNonQuery(); //执行一个非查询命令
conn.Close(); //关闭数据库连接
} [2]
