160 lines
5.7 KiB
C#
160 lines
5.7 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Text;
|
|||
|
|
using CYQ.Data.Tool;
|
|||
|
|
using System.Threading;
|
|||
|
|
using System.IO;
|
|||
|
|
using CYQ.Data.Orm;
|
|||
|
|
|
|||
|
|
|
|||
|
|
namespace CYQ.Data
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
internal static class DalCreate
|
|||
|
|
{
|
|||
|
|
//private const string SqlClient = "System.Data.SqlClient";
|
|||
|
|
//private const string OleDb = "System.Data.OleDb";
|
|||
|
|
//private const string OracleClient = "System.Data.OracleClient";
|
|||
|
|
//private const string SQLiteClient = "System.Data.SQLite";
|
|||
|
|
//private const string MySqlClient = "MySql.Data.MySqlClient";
|
|||
|
|
//private const string SybaseClient = "Sybase.Data.AseClient";
|
|||
|
|
//private const string PostgreClient = "System.Data.NpgSqlClient";
|
|||
|
|
//private const string TxtClient = "CYQ.Data.TxtClient";
|
|||
|
|
//private const string XmlClient = "CYQ.Data.XmlClient";
|
|||
|
|
//private const string XHtmlClient = "CYQ.Data.XHtmlClient";
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// ȫ<>ִ浵<D6B4><E6B5B5><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
private static MDictionary<string, DalBase> dalBaseDic = new MDictionary<string, DalBase>();
|
|||
|
|
public static DalBase Get(string key)
|
|||
|
|
{
|
|||
|
|
if (dalBaseDic.ContainsKey(key))
|
|||
|
|
{
|
|||
|
|
return dalBaseDic[key];
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
public static bool Remove(string key)
|
|||
|
|
{
|
|||
|
|
return dalBaseDic.Remove(key);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><EFBFBD><F2B5A5B9><EFBFBD><EFBFBD><EFBFBD>Factory Method<6F><64>
|
|||
|
|
/// </summary>
|
|||
|
|
public static DalBase CreateDal(string connNameOrString)
|
|||
|
|
{
|
|||
|
|
string key = StaticTool.GetTransationKey(connNameOrString);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
bool isTrans = DBFast.HasTransation(key);
|
|||
|
|
if (isTrans)
|
|||
|
|
{
|
|||
|
|
if (dalBaseDic.ContainsKey(key))
|
|||
|
|
{
|
|||
|
|
return dalBaseDic[key];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
DalBase dal = CreateDalBase(connNameOrString);
|
|||
|
|
if (isTrans)
|
|||
|
|
{
|
|||
|
|
dal.TranLevel = DBFast.GetTransationLevel(key);
|
|||
|
|
dal.IsOpenTrans = true;
|
|||
|
|
dalBaseDic.Add(key, dal);
|
|||
|
|
}
|
|||
|
|
return dal;
|
|||
|
|
}
|
|||
|
|
private static DalBase CreateDalBase(string connNameOrString)
|
|||
|
|
{
|
|||
|
|
//ABCConn
|
|||
|
|
DalBase db = GetDalBaseBy(ConnObject.Create(connNameOrString));
|
|||
|
|
|
|||
|
|
if (!string.IsNullOrEmpty(connNameOrString) && db.ConnObj.Master.ConnName.ToLower() != connNameOrString.ToLower() && connNameOrString.EndsWith("Conn"))//<2F><>Ҫ<EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>á<EFBFBD>
|
|||
|
|
{
|
|||
|
|
//Conn A<><41>
|
|||
|
|
//BConn xxx <20>Ҳ<EFBFBD><D2B2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ĭ<EFBFBD>Ͽ⡣
|
|||
|
|
DBResetResult result = db.ChangeDatabase(connNameOrString.Substring(0, connNameOrString.Length - 4));
|
|||
|
|
if (result == DBResetResult.Yes) // д<>뻺<EFBFBD><EBBBBA>
|
|||
|
|
{
|
|||
|
|
db.ConnObj.SaveToCache(connNameOrString);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return db;
|
|||
|
|
}
|
|||
|
|
private static DalBase GetDalBaseBy(ConnObject co)
|
|||
|
|
{
|
|||
|
|
DataBaseType dalType = co.Master.ConnDataBaseType;
|
|||
|
|
//License.Check(providerName);//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>⡣
|
|||
|
|
switch (dalType)
|
|||
|
|
{
|
|||
|
|
case DataBaseType.MsSql:
|
|||
|
|
return new MsSqlDal(co);
|
|||
|
|
case DataBaseType.Access:
|
|||
|
|
case DataBaseType.Excel:
|
|||
|
|
case DataBaseType.FoxPro:
|
|||
|
|
return new OleDbDal(co);
|
|||
|
|
case DataBaseType.Oracle:
|
|||
|
|
return new OracleDal(co);
|
|||
|
|
case DataBaseType.SQLite:
|
|||
|
|
return new SQLiteDal(co);
|
|||
|
|
case DataBaseType.MySql:
|
|||
|
|
return new MySQLDal(co);
|
|||
|
|
case DataBaseType.Sybase:
|
|||
|
|
return new SybaseDal(co);
|
|||
|
|
case DataBaseType.PostgreSQL:
|
|||
|
|
return new PostgreDal(co);
|
|||
|
|
case DataBaseType.DB2:
|
|||
|
|
return new DB2Dal(co);
|
|||
|
|
case DataBaseType.Txt:
|
|||
|
|
case DataBaseType.Xml:
|
|||
|
|
return new NoSqlDal(co);
|
|||
|
|
case DataBaseType.FireBird:
|
|||
|
|
return new FireBirdDal(co);
|
|||
|
|
case DataBaseType.DaMeng:
|
|||
|
|
return new DaMengDal(co);
|
|||
|
|
case DataBaseType.KingBaseES:
|
|||
|
|
return new KingBaseESDal(co);
|
|||
|
|
}
|
|||
|
|
return (DalBase)Error.Throw(string.Format("GetHelper:{0} No Be Support Now!", dalType.ToString()));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static DataBaseType GetDalTypeByReaderName(string typeName)
|
|||
|
|
{
|
|||
|
|
switch (typeName.Replace("DataReader", "").ToLower())
|
|||
|
|
{
|
|||
|
|
case "oracle":
|
|||
|
|
return DataBaseType.Oracle;
|
|||
|
|
case "sql":
|
|||
|
|
return DataBaseType.MsSql;
|
|||
|
|
case "sqlite":
|
|||
|
|
return DataBaseType.SQLite;
|
|||
|
|
case "oledb":
|
|||
|
|
return DataBaseType.Access;
|
|||
|
|
case "mysql":
|
|||
|
|
return DataBaseType.MySql;
|
|||
|
|
case "odbc":
|
|||
|
|
case "ase":
|
|||
|
|
return DataBaseType.Sybase;
|
|||
|
|
case "pgsql":
|
|||
|
|
case "npgsql":
|
|||
|
|
return DataBaseType.PostgreSQL;
|
|||
|
|
case "db2":
|
|||
|
|
return DataBaseType.DB2;
|
|||
|
|
case "fb":
|
|||
|
|
return DataBaseType.FireBird;
|
|||
|
|
case "dm":
|
|||
|
|
return DataBaseType.DaMeng;
|
|||
|
|
case "Kdbndp":
|
|||
|
|
return DataBaseType.KingBaseES;
|
|||
|
|
default:
|
|||
|
|
return DataBaseType.None;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|