⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbfactory.cs

📁 抽象工厂的典型实现
💻 CS
字号:
using System;
using System.Data;
using System.Data.Common;
using System.Collections;

#region 版权声明
///
/// 版权所有(C)2005,2006  作者:漆巧林。保留所有权利, davidqql@gmail.com, davidqql@hotmail.com
/// 
/// 作者不对本代码提供任何保证,因此,对于使用该代码带来的损害或者潜在的损害,作者不承担责任。
/// 在满足如下的条件下,你可以自由使用该代码:
/// 1. 非商业应用
/// 2. 保留本版权声明
/// 要进行商业应用,必须得到作者的书面许可。
/// 你可以修改和自由发布本代码,条件是保留前述的版权声明。
/// 
#endregion

namespace DataAccess
{
	/// <summary>
	/// DbFactory :抽象的数据库工厂类。
	/// </summary>
	public abstract class DbFactory
	{
		protected int nParam;	// 参数序号

		public abstract IDbConnection CreateConnection();
		public abstract IDbConnection CreateConnection(string connectionString);

		public abstract IDbDataAdapter CreateAdapter();
		public abstract IDbDataAdapter CreateAdapter(IDbCommand selectCommand);
		public abstract IDbDataAdapter CreateAdapter(string selectCommandText, IDbConnection selectConnection);
		public abstract IDbDataAdapter CreateAdapter(string selectCommandText, string selectConnectionString);

		public abstract IDbCommand CreateCommand();
		public abstract IDbCommand CreateCommand(string cmdText);
		public abstract IDbCommand CreateCommand(string cmdText, IDbConnection connection);
		public abstract IDbCommand CreateCommand(string cmdText, IDbConnection connection, IDbTransaction transaction);

		public abstract DbCommandBuilder CreateCommandBuilder();
		public abstract DbCommandBuilder CreateCommandBuilder(IDbDataAdapter adapter);

		/// <summary>
		/// 根据条件生成选择命令
		/// </summary>
		/// <param name="tableName">表名</param>
		/// <param name="condition">条件列表</param>
		/// <returns>返回根据条件形成的、带参数的选择命令</returns>
		public IDbCommand CreateSelectCommand(string tableName, ConditionList condition)
		{
			IDbCommand cmd = this.CreateCommand(String.Format("SELECT * FROM {0}", tableName));
			AppendCommandCondition(cmd, condition);
			return cmd;
		}

		protected abstract void AppendItem(IDbCommand cmd, ConditionList.ConditionItem item, bool bFirst);
		/// <summary>
		/// 附加 WHERE 条件子句
		/// </summary>
		/// <param name="cmd"></param>
		/// <param name="condition"></param>
		public void AppendCommandCondition(IDbCommand cmd, ConditionList condition)
		{
			if(condition.Items.Count == 0)
				return;
//			System.Text.StringBuilder cbCmd = new System.Text.StringBuilder();

			IEnumerator it = condition.Items.GetEnumerator();
			it.MoveNext();
			this.AppendItem(cmd, (ConditionList.ConditionItem)it.Current, true);
			while(it.MoveNext())
			{
				AppendItem(cmd, (ConditionList.ConditionItem)it.Current, false);
			}
		}

		/// <summary>
		/// 附加命令条件子句
		/// </summary>
		/// <param name="cmd">命令</param>
		/// <param name="clause">子句串:WHERE、AND、HAVING</param>
		/// <param name="fieldName"></param>
		/// <param name="relation"></param>
		/// <param name="fieldValue"></param>
		public abstract void AppendCommandCondition(IDbCommand cmd, string clause, string fieldName, String relation, object fieldValue);

		public abstract IDbCommand CreateIdentityGetter(string tableName);

		public abstract IDbInitiationHelper CreateInitiationHelper(String connectionString);
		public abstract IDbInitiationHelper CreateInitiationHelper(IDbConnection connection);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -