updatestatement.cs

来自「.net的数据持久层」· CS 代码 · 共 78 行

CS
78
字号
using System;
using System.Text;

namespace Platform.Data {

	public class UpdateStatement : StatementBase {

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

		private string _SetString;
		public string SetString {
			get { return _SetString; }
			set { _SetString = value; }
		}

		public override void BuildSqlClause() {
			this.SetString = this.BuildSetString();
			this.WhereString = this.BuildWhereString();
			this.SqlClause = String.Format("UPDATE {0} SET {1} WHERE {2}",
				this.TableName, this.SetString, this.WhereString);
		}

		private string BuildSetString(){
			StringBuilder sb = new StringBuilder();
			foreach( FieldProp fp in this.Fields ){
				if( !fp.IsKeyField ){
					if( sb.Length > 0 ){
						sb.Append( ",");
					}
					sb.Append( String.Format( "{0}={1}{0}", fp.FieldName, DataHelper.DataDriver.ParameterPrix ) );
					DataParameter dp = this.MakeDataParameter( fp );
					this.Parameters.Add( dp );
				}
			}
			return sb.ToString();
		}

		public override void FillDataParameter(object obj) {
			foreach(FieldProp fp in this.Fields){
				DataParameter dp = this.Parameters[ fp.FieldName ];
				if( fp.Size != 0 ){
					dp.Size = fp.Size;
				}
				dp.Value = fp.GetValue( obj );
			}
		}
		public override StatementBase Create() {
			return new UpdateStatement();
		}

		public override object Clone() {
			UpdateStatement sql = (UpdateStatement)base.Clone();
			sql.SetString = this.SetString;
			return sql;
		}

		public void Perform( CriteriaCollection cts)
		{
//			if( cts != null )
//			{
//				this.AddCriterias( cts );
//			}			
//			
//
//			string whereString = this.CriteriaString.Length > 0 ? " WHERE " + this.CriteriaString : "";
//			string sql = String.Format( "update {0} set {1}  {2}",
//				this.TableName,
//				this.SetString,
//				whereString);
//
//			this.SqlClause = sql;
		}

	}
}

⌨️ 快捷键说明

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