DAL层连接多数据库跨服务器进行数据交互对接
DAL(Data Access Layer)
DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer)。其功能主要是负责数据库的访问,简单地说就是实现对数据表的Select(查询)、Insert(插入)、Update(更新)、Delete(删除)等操作。
对于企业级大型软件系统,数据访问层承载更多的数据逻辑处理的工作,比如操作多个数据库,或者跨服务器进行数据交互,数据对接等。
CSFramework.DB组件
CSFramework.DB组件针对多个数据库操作,或者跨服务器数据交互与对接提供强大的技术支持,封装大量底层常用接口与方法,在实际应用中调用方法与接口就能实现。
本文针对DAL层连接多数据库,跨服务器进行数据操作方面提供客户实例,供大家参考。
DatabaseProvider
DatabaseProvider,既数据库提供者(DAL层应用)。DatabaseProvider的主要职责是初始化数据库连接,以及提供一组通用方法创建IDatabase实例。
C# 全选
/// <summary>
/// 数据库提供者(DAL层应用)
/// </summary>
public static class DatabaseProvider
{
//连接字符串列表 <key,connectionString>
private static Dictionary<string, string> _ConnectionString = new Dictionary<string, string>();
//活动数据库列表 <key,IDatabase>
private static Dictionary<string, IDatabase> _ActivedDBs = new Dictionary<string, IDatabase>();
//静态构造器
static DatabaseProvider()
{
InitConnection(Globals.IsTestMode);
}
public static void InitConnection(bool isTest)
{
_ConnectionString.Clear();
//系统数据库,需要建立数据库
_ConnectionString["MiniSystem"] = "Server=121.79.28.39;Database=CSFramework_Mini;User ID=test;Password=123456.";
//其他数据库
_ConnectionString["GTDB8120"] = "Server=121.79.28.39;Database=GTDB8;User ID=test;Password=123456.";
_ConnectionString["C_bei120"] = "Server=121.79.28.39;Database=C_bei;User ID=test;Password=123456.";
_ConnectionString["gSales"] = "Server=121.79.28.39;Database=gSales;User ID=test;Password=123456.";
_ConnectionString["C_bei110"] = "Server=121.79.28.39;Database=C_bei110;User ID=test;Password=qifan123456.";
}
/// <summary>
/// 获取活动状态的数据库
/// </summary>
/// <param name="DBID">账套编号</param>
/// <returns></returns>
public static IDatabase GetDatabase(DBIDs DBID)
{
//使用缓存的IDatabase实例
if (!_ActivedDBs.ContainsKey(DBID.ToString()))
{
IDatabase db = DatabaseFactory.CreateSqlDatabase(_ConnectionString[DBID.ToString()]);//OK
_ActivedDBs.Add(DBID.ToString(), db);
}
return _ActivedDBs[DBID.ToString()];
}
}
DBIDs
DBID,Database ID的简称,数据库编号。DBIDs是个枚举类型,定义企业级系统需要连接的数据库编号。
参考:
C# 全选
public enum DBIDs
{
/// <summary>
/// MiniSystem作为系统库
/// </summary>
MiniSystem,
/// <summary>
/// 其他数据库、账套数据库
/// </summary>
GTDB8120,
/// <summary>
/// 其他数据库、账套数据库
/// </summary>
C_bei120,
/// <summary>
/// 其他数据库、账套数据库
/// </summary>
gSales,
/// <summary>
/// ERP数据库、其他数据库、账套数据库
/// </summary>
C_bei110
}
DAL层创建多个IDatabase实例
C# 全选
/// <summary>
/// 同步数据方法
/// </summary>
/// <returns></returns>
internal int SyncData()
{
//创建不同数据库的实例
IDatabase db_MsSQL = DatabaseProvider.GetDatabase(DBIDs.GTDB8120);//MsSQL数据库
IDatabase db_Oracle = DatabaseProvider.GetDatabase(DBIDs.C_bei110);//Oracle数据库
IDatabase db_MySQL = DatabaseProvider.GetDatabase(DBIDs.GTDB8120);//MySQL数据库
//获取不同数据库服务器的数据
var d1 = db_MsSQL.GetTable("SELECT * FROM dt_Customer WHERE FlagSync=0");
var d2 = db_Oracle.GetTable("SELECT * FROM DT_CUSTOMER WHERE FlagSync=0");//oracle
var d3 = db_MySQL.GetTable("SELECT * FROM dt_Customer WHERE FlagSync=0");
//
//数据处理, 省略。。。
//
//操作MySQL数据库
var cmd1 = db_MySQL.CreateCommand("");
db_MySQL.ExecuteCommand(cmd1.Command);
//操作Oracle数据库
var cmd2 = db_Oracle.CreateCommand("");
db_Oracle.ExecuteCommand(cmd2.Command);
return 0;
}
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网