📄 liststatement.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 + -