123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Text.RegularExpressions;
- using Ant.Frame;
- using Ant.Data;
- namespace Ant.ORM
- {
- class OleDbQueryCommandBuilder : QueryCommandBuilder
- {
- public override QueryCommand GetQueryCommand()
- {
- QueryCommand cmd = null;
- EntityPersistType str = (!object.Equals(PersistType, null)) ? PersistType : Md.PersistType;
- switch (str)
- {
- case EntityPersistType.Save:
- cmd = ParserInsertCommand();
- break;
- case EntityPersistType.Update:
- cmd = ParserUpdateCommand();
- break;
- case EntityPersistType.Delete:
- cmd = ParserDeleteCommand();
- break;
- case EntityPersistType.Query:
- cmd = ParserSelectCommand();
- break;
- case EntityPersistType.Sum:
- cmd = ParserSumCommand();
- break;
- }
- return cmd;
-
- }
- /// <summary>
- /// ½âÎöInsert SQL
- /// </summary>
- /// <returns></returns>
- private QueryCommand ParserInsertCommand()
- {
- QueryCommand qc = new QueryCommand();
- //StringBuilder sql = new StringBuilder();
- //sql.AppendFormat("INSERT INTO [{0}]",Md.FiledMeta.TableName);
- //List<string> columns = new List<string>();
- //List<string> param = new List<string>();
- //List<string> value = new List<string>();
- //foreach (string key in Fields.Keys)
- //{
- // if (!Md.FiledMeta.FieldMeteDatas[key].IsAutoincrement)
- // {
- // columns.Add(string.Format("[{0}]", Md.FiledMeta.FieldMeteDatas[key].ColumnName));
- // param.Add("@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName);
- // QueryParameter parameter = new QueryParameter();
- // parameter.ParameterName = "@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName;
- // parameter.Value = Fields[key];
- // qc.Parameters.Add(parameter);
- // value.Add(string.Format("'{0}'", Fields[key].ToString()));
- // }
- //}
- ////sql.AppendFormat("({0}) VALUES({1})", string.Join(",", columns.ToArray()), string.Join(",", param.ToArray()));
- //sql.AppendFormat("({0}) VALUES({1})", string.Join(",", columns.ToArray()), string.Join(",", param.ToArray()));
- //qc.CommandText = sql.ToString();
- return qc;
- }
- private QueryCommand ParserUpdateCommand()
- {
- QueryCommand qc = new QueryCommand();
- //StringBuilder sql = new StringBuilder();
- //sql.AppendFormat("UPDATE [{0}] SET ", Md.FiledMeta.TableName);
- //List<string> updateColumns = new List<string>();
- //List<string> condition = new List<string>();
- //foreach (string key in Fields.Keys)
- //{
- // if (!Md.FiledMeta.FieldMeteDatas[key].IsPrimaryKey)
- // {
- // updateColumns.Add(string.Format("[{0}]=@{0}", Md.FiledMeta.FieldMeteDatas[key].ColumnName));
- // qc.Parameters.Add("@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName, Fields[key]);
- // }
- //}
- //foreach (string key in Fields.Keys)
- //{
- // if (Md.FiledMeta.FieldMeteDatas[key].IsPrimaryKey)
- // {
- // condition.Add(string.Format("[{0}]=@{0}", Md.FiledMeta.FieldMeteDatas[key].ColumnName));
- // qc.Parameters.Add("@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName, Fields[key]);
- // }
- //}
-
- //sql.Append(string.Join(",", updateColumns.ToArray())).Append(" WHERE ").Append(string.Join(" AND ", condition.ToArray()));
- //qc.CommandText = sql.ToString();
- return qc;
- }
- private QueryCommand ParserDeleteCommand()
- {
- QueryCommand qc = new QueryCommand();
- StringBuilder sql = new StringBuilder();
- //sql.AppendFormat("DELETE FROM [{0}]", Md.FiledMeta.TableName);
- //List<string> primaryKeys = new List<string>();
- //foreach (DataFieldMetaData df in Md.FiledMeta.FieldMeteDatas.Values)
- //{
- // if (df.IsPrimaryKey)
- // {
- // primaryKeys.Add(string.Format("[{0}]=@{0}", df.ColumnName));
- // qc.Parameters.Add("@" + df.ColumnName, df.ColumnType, Fields[df.PropertyName]);
- // }
- //}
- //sql.AppendFormat("WHERE {0}", string.Join(" AND ", primaryKeys.ToArray()));
- //qc.CommandText = sql.ToString();
- return qc;
- }
- private QueryCommand ParserSelectCommand()
- {
- QueryCommand qc = new QueryCommand();
-
- //StringBuilder sql = new StringBuilder();
- //List<string> columns = new List<string>();
- //foreach (DataFieldMetaData df in Md.FiledMeta.FieldMeteDatas.Values)
- //{
- // columns.Add(string.Format("[{0}]", df.ColumnName));
- //}
- //sql.AppendFormat("SELECT {0} FROM [{1}]", string.Join(",", columns.ToArray()), Md.FiledMeta.Table.Name);
- //if (!string.IsNullOrEmpty(Md.WhereSql))
- //{
- // sql.AppendFormat(" WHERE {0}", Md.WhereSql);
- //}
- //qc.CommandText = sql.ToString();
- //qc.MaxRecords = PageSize;
- //qc.StartRecord = PageSize * PageNo;
- return qc;
- }
- private QueryCommand ParserSumCommand()
- {
- QueryCommand qc = new QueryCommand();
- StringBuilder sql = new StringBuilder();
- sql.AppendFormat("SELECT COUNT(*) FROM {0}", Md.FiledMeta.Table.Name);
- if (!string.IsNullOrEmpty(Md.WhereSql))
- {
- sql.AppendFormat(" WHERE {0}", Md.WhereSql);
- }
- qc.CommandText = sql.ToString();
- return qc;
- }
- /// <summary>
- /// ×ÔÔö³¤
- /// </summary>
- /// <returns></returns>
- public string GetLastInsertID()
- {
- return "SELECT @@IDENTITY;";
- }
- }
- }
|