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

📄 liststatement.cs

📁 .net的数据持久层
💻 CS
字号:
using System;
using System.Text;

namespace Platform.Data {

	public class ListStatement : StatementBase {

		public ListStatement() : base() { }

		public ListStatement(object obj ) : base (obj){ }

		public ListStatement(object obj ,string _TName) : base (obj,_TName){ }


		public override void BuildSqlClause() 
		{
			this.FieldString = this.BuildFieldString();
			this.KeyFieldsString = this.BuildKeyFieldString();
		}

		public override void FillDataParameter(object obj) { }

//		private StringBuilder _CriteriaString;
//		private StringBuilder CriteriaString {
//			get {
//				if( _CriteriaString == null ){
//					_CriteriaString = new StringBuilder();
//				}
//				return _CriteriaString;
//			}
//		}

		public void PerformRemove( CriteriaCollection cts ){
			if( cts != null ){
				this.AddCriterias( cts );
			}
			this.SqlClause = String.Format("DELETE FROM {1} {2} {3}",
				this.FieldString, this.TableName,
				(this.CriteriaString.Length > 0 ? "WHERE" : ""),
				this.CriteriaString.ToString());
		}

		private string BuildOrderByString( OrderCriteriaCollection ods ){
			StringBuilder sb = new StringBuilder();
			foreach(OrderCriteria oc in ods ){
				if( sb.Length > 0 ){
					sb.Append( ",");
				}
				
				// TODO: ASC or DESC must bind to native db driver!
				sb.Append( this.Fields[ oc.Name ].FieldName );
				if( oc.Mode == OrderMode.Asc ){
					sb.Append( " ASC" );
				}
				else{
					sb.Append( " DESC" );
				}
			}
			return sb.ToString();
		}
	
		private string BuildConOrderString( OrderCriteriaCollection ods ){
			StringBuilder sb = new StringBuilder();
			foreach( OrderCriteria od in ods ){
				if( sb.Length > 0 ){
					sb.Append( ", " );
				}
				sb.Append( this.Fields[ od.Name ].FieldName );
				if( od.Mode == OrderMode.Asc ){
					sb.Append( " DESC" );
				}
				else{
					sb.Append( " ASC" );
				}
			}
			return sb.ToString();
		}

		public void Perform( CriteriaCollection cts, OrderCriteriaCollection ods, int from, int to ){
			if( cts != null ){
				this.AddCriterias( cts );
			}			
			

			string orderString = null;
			string conOrderString = null;
			if( ods != null ){
				string s = this.BuildOrderByString( ods );
				if ( s.Length > 0 ){
					orderString = " ORDER BY " + this.BuildOrderByString( ods );
					conOrderString = " ORDER BY " + this.BuildConOrderString( ods );
				}
			}
			if( orderString == null ){
				orderString = this.BuildKeyFieldString();
				if( orderString.Length == 0 ){
					orderString = " ORDER BY " + this.BuildFieldString();
				}
				else{
					orderString = " ORDER BY " + orderString;
				}
				conOrderString = orderString + " DESC ";
			}

			string whereString = this.CriteriaString.Length > 0 ? " WHERE " + this.CriteriaString : "";
			string sql = String.Format( "SELECT {0} FROM {1} {2} {3}",
				this.FieldString, 
				this.TableName,
				whereString,
				orderString);

			this.SqlClause = DataHelper.DataDriver.BuildListSqlCaluse( sql, from, to, conOrderString,  orderString);
		}

//		private string GetTypeString( CriteriaType type ){
//			switch( type ){
//				case CriteriaType.NotEquals:
//					return "<>";
//
//				case CriteriaType.LessThan:
//					return "<";
//
//				case CriteriaType.LessThanEquals:
//					return "<=";
//
//				case CriteriaType.MoreThan :
//					return ">";
//
//				case CriteriaType.MoreThanEquals:
//					return ">=";
//
//				case CriteriaType.Like:
//					return "LIKE";
//
//				case CriteriaType.NotLike:
//					return "NOT LIKE";
//
//				case CriteriaType.Equals:
//				default:
//					return "=";
//			}
//		}
//
		private void AddCriterias(CriteriaCollection cts ){
			foreach(Criteria ct in cts ){
				this.AddCriteria( this.GetTypeString(ct.Type), ct.Name, ct.Value);
			}
		}

		public void PerformCount( CriteriaCollection cts){
			if( cts != null ){
				this.AddCriterias( cts );
			}				
			this.SqlClause = String.Format("SELECT COUNT(*) FROM {1} {2} {3}",
				this.FieldString, this.TableName,
				(this.CriteriaString.Length > 0 ? "WHERE" : ""),
				this.CriteriaString.ToString());
		}
//
//		private int _ParameterCount;
//		private string NewParameterName {
//			get { return String.Format("PARA__{0}_1", _ParameterCount++ ); }
//		}
//
//		private void AddCriteria( string type, string prop, object value)
//		{
//			if( this.CriteriaString.Length > 0 ) 
//			{
//				this.CriteriaString.Append( " AND " );
//			}
//			string fn = this.Fields[prop].FieldName;
//			string pn = this.NewParameterName;
//			this.CriteriaString.Append( String.Format("{0} {1} {2}{3}", fn, type, DataHelper.DataDriver.ParameterPrix, pn));
//			this.Parameters.Add( new DataParameter( pn, value ) );
//		}
//
		public override StatementBase Create() {
			return new ListStatement();
		}

	}
}

⌨️ 快捷键说明

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