标签:style io os 使用 ar 文件 数据 div art
在项目开发时,有时候可能会增加或修改新的数据库,比如,刚开始我们项目用SQL Server 数据库,但后来需要用Oracle 数据库,或者说在某些情况下需要用Oracle 来代替SQL Server 数据库,甚至两种情况会同时存在,但数据库访问方面 Oracle 和SQL Server 是不同的,它们的语句写法不同,甚至所示哟哦那个的.NET Framework 数据提供程序也是不同的,那应该怎么办呢?
1. 新增数据访问层
我们不修改原来的DAL的代码,可以将原来的项目命名为SQLServerDAL,我们可以增加一个针对Oracle的DAL项目来单独实现对Oracle的访问。这样就会有两个DAL,一个用于访问SQLServer,一个用于访问Oracle。
2. 实现IDAL抽象接口
由于SQL Server 和 Oracle 对数据库的基本操作是一样的,都是增、删、改、查。所以,可以将相同的功能的操作的一系列对象抽象出来实现同一个接口:IDAL。让SQLServerDAL 的类 和OracleDAL 的类都继承这个接口。具体方法如下:
(1)添加IDAL类库项目和接口文件IManager.cs,具体代码如下(由于接口中调用Model, 所以需要添加对Model项目的引用)
//IManager.cs
namespace IDAL
{
/// <summary>
/// 接口层IManager的摘要说明
/// </summary>
public interface IManager
{
//<summary>
//增加一条数据
//</summary>
int Add(Model.Manager model);
//<summary>
//更新一条数据
//</summary>
void Update(Model.Manager model);
//<summary>
//删除一条数据
//</summary>
void Delete(string managerid);
//<summary>
//得到一个实体
//</summary>
Hui.Model.Manager GetModel(string managerid);
//<summary>
//获得数据列表
//</summary>
DataSet GetList(string managerid);
}
(2)在SQLServerDAL 和 OracleDAL 项目中添加对IDAL项目的引用,然后,SQLServerDAL 和 OracleDAL 项目中分别创建一个数据访问类:Manager,并继承自IManager的接口。
//SQLServerDAL.cs
using System.Data;
using System.Data.SqlClient;
using DBUtility;
using IDAL;
namespace SQLServerDAL
{
/// <summary>
/// Manager 数据访问类
/// </summary>
public class Manager:IManager
{
public Manager()
{
}
//<summary>
//增加一条记录
//</summary>
public int Add(Model.Manager manager)
{
return 0;
}
//<summary>
//更新一条记录
//</summary>
public void Update(Model.Manager manager)
{
}
//<summary>
//删除一条记录
//</summary>
public void Delete(string managerid)
{
}
//<summary>
//获得列表
//<summary>
public DataSet GetList(string manageid)
{
DataSet ds = new DataSet();
ds = null;
return ds;
}
///<summary>
///得到一个对象实体
///</summary>
public Model.Manager GetModel(string ManagerId)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select ID, ManagerId, PassWord");
strSql.Append(" from M_Manager");
strSql.Append(" where ManagerId = @ManagerId");
SqlParameter[] parameters = {
new SqlParameter ("@ManagerId", SqlDbType.VarChar, 20) };
parameters[0].Value = ManagerId;
Model.Manager model = new Model.Manager();
DataSet ds = DBUtility.DbHelperSQL.Query(strSql.ToString(), parameters);
if (ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows[0]["ID"].ToString() != "")
{
model.ID = int.Parse(ds.Tables[0].Rows[0]["ID"].ToString());
}
model.ManagerId = ds.Tables[0].Rows[0]["ManagerId"].ToString();
model.PassWord = ds.Tables[0].Rows[0]["PassWord"].ToString();
return model;
}
else
{
return null;
}
}
}
}
//OracleDAL.cs
using System.Data;
using System.Data.OracleClient;
using IDAL;
using DBUtility;
namespace OracleDAL
{
//<summary>
//数据访问类
//</summary>
public class Manager : IManager
{
public Manager()
{
}
//<summary>
//添加一条记录
//</summary>
public int Add(Model.Manager model)
{
return 0;
}
//<summary>
//更新一条记录
//</summary>
public void Update(Model.Manager model)
{
}
//<summary>
//获得一个实体
//</summary>
public Model.Manager GetModel(string managerid)
{
return null;
}
//<summary>
//删除一条记录
//</summary>
public void Delete(string managerid)
{
}
//<summary>
//获得列表
//<summary>
public DataSet GetList(string manageid)
{
DataSet ds = new DataSet();
ds = null;
return ds;
}
}
}
注:在接口里定义的所有接口方法,在派生类里必须全部实现。
标签:style io os 使用 ar 文件 数据 div art
原文地址:http://www.cnblogs.com/lschenblog/p/3978636.html