OleDbQueryCommandBuilder.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Text.RegularExpressions;
  5. using Ant.Frame;
  6. using Ant.Data;
  7. namespace Ant.ORM
  8. {
  9. class OleDbQueryCommandBuilder : QueryCommandBuilder
  10. {
  11. public override QueryCommand GetQueryCommand()
  12. {
  13. QueryCommand cmd = null;
  14. EntityPersistType str = (!object.Equals(PersistType, null)) ? PersistType : Md.PersistType;
  15. switch (str)
  16. {
  17. case EntityPersistType.Save:
  18. cmd = ParserInsertCommand();
  19. break;
  20. case EntityPersistType.Update:
  21. cmd = ParserUpdateCommand();
  22. break;
  23. case EntityPersistType.Delete:
  24. cmd = ParserDeleteCommand();
  25. break;
  26. case EntityPersistType.Query:
  27. cmd = ParserSelectCommand();
  28. break;
  29. case EntityPersistType.Sum:
  30. cmd = ParserSumCommand();
  31. break;
  32. }
  33. return cmd;
  34. }
  35. /// <summary>
  36. /// ½âÎöInsert SQL
  37. /// </summary>
  38. /// <returns></returns>
  39. private QueryCommand ParserInsertCommand()
  40. {
  41. QueryCommand qc = new QueryCommand();
  42. //StringBuilder sql = new StringBuilder();
  43. //sql.AppendFormat("INSERT INTO [{0}]",Md.FiledMeta.TableName);
  44. //List<string> columns = new List<string>();
  45. //List<string> param = new List<string>();
  46. //List<string> value = new List<string>();
  47. //foreach (string key in Fields.Keys)
  48. //{
  49. // if (!Md.FiledMeta.FieldMeteDatas[key].IsAutoincrement)
  50. // {
  51. // columns.Add(string.Format("[{0}]", Md.FiledMeta.FieldMeteDatas[key].ColumnName));
  52. // param.Add("@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName);
  53. // QueryParameter parameter = new QueryParameter();
  54. // parameter.ParameterName = "@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName;
  55. // parameter.Value = Fields[key];
  56. // qc.Parameters.Add(parameter);
  57. // value.Add(string.Format("'{0}'", Fields[key].ToString()));
  58. // }
  59. //}
  60. ////sql.AppendFormat("({0}) VALUES({1})", string.Join(",", columns.ToArray()), string.Join(",", param.ToArray()));
  61. //sql.AppendFormat("({0}) VALUES({1})", string.Join(",", columns.ToArray()), string.Join(",", param.ToArray()));
  62. //qc.CommandText = sql.ToString();
  63. return qc;
  64. }
  65. private QueryCommand ParserUpdateCommand()
  66. {
  67. QueryCommand qc = new QueryCommand();
  68. //StringBuilder sql = new StringBuilder();
  69. //sql.AppendFormat("UPDATE [{0}] SET ", Md.FiledMeta.TableName);
  70. //List<string> updateColumns = new List<string>();
  71. //List<string> condition = new List<string>();
  72. //foreach (string key in Fields.Keys)
  73. //{
  74. // if (!Md.FiledMeta.FieldMeteDatas[key].IsPrimaryKey)
  75. // {
  76. // updateColumns.Add(string.Format("[{0}]=@{0}", Md.FiledMeta.FieldMeteDatas[key].ColumnName));
  77. // qc.Parameters.Add("@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName, Fields[key]);
  78. // }
  79. //}
  80. //foreach (string key in Fields.Keys)
  81. //{
  82. // if (Md.FiledMeta.FieldMeteDatas[key].IsPrimaryKey)
  83. // {
  84. // condition.Add(string.Format("[{0}]=@{0}", Md.FiledMeta.FieldMeteDatas[key].ColumnName));
  85. // qc.Parameters.Add("@" + Md.FiledMeta.FieldMeteDatas[key].ColumnName, Fields[key]);
  86. // }
  87. //}
  88. //sql.Append(string.Join(",", updateColumns.ToArray())).Append(" WHERE ").Append(string.Join(" AND ", condition.ToArray()));
  89. //qc.CommandText = sql.ToString();
  90. return qc;
  91. }
  92. private QueryCommand ParserDeleteCommand()
  93. {
  94. QueryCommand qc = new QueryCommand();
  95. StringBuilder sql = new StringBuilder();
  96. //sql.AppendFormat("DELETE FROM [{0}]", Md.FiledMeta.TableName);
  97. //List<string> primaryKeys = new List<string>();
  98. //foreach (DataFieldMetaData df in Md.FiledMeta.FieldMeteDatas.Values)
  99. //{
  100. // if (df.IsPrimaryKey)
  101. // {
  102. // primaryKeys.Add(string.Format("[{0}]=@{0}", df.ColumnName));
  103. // qc.Parameters.Add("@" + df.ColumnName, df.ColumnType, Fields[df.PropertyName]);
  104. // }
  105. //}
  106. //sql.AppendFormat("WHERE {0}", string.Join(" AND ", primaryKeys.ToArray()));
  107. //qc.CommandText = sql.ToString();
  108. return qc;
  109. }
  110. private QueryCommand ParserSelectCommand()
  111. {
  112. QueryCommand qc = new QueryCommand();
  113. //StringBuilder sql = new StringBuilder();
  114. //List<string> columns = new List<string>();
  115. //foreach (DataFieldMetaData df in Md.FiledMeta.FieldMeteDatas.Values)
  116. //{
  117. // columns.Add(string.Format("[{0}]", df.ColumnName));
  118. //}
  119. //sql.AppendFormat("SELECT {0} FROM [{1}]", string.Join(",", columns.ToArray()), Md.FiledMeta.Table.Name);
  120. //if (!string.IsNullOrEmpty(Md.WhereSql))
  121. //{
  122. // sql.AppendFormat(" WHERE {0}", Md.WhereSql);
  123. //}
  124. //qc.CommandText = sql.ToString();
  125. //qc.MaxRecords = PageSize;
  126. //qc.StartRecord = PageSize * PageNo;
  127. return qc;
  128. }
  129. private QueryCommand ParserSumCommand()
  130. {
  131. QueryCommand qc = new QueryCommand();
  132. StringBuilder sql = new StringBuilder();
  133. sql.AppendFormat("SELECT COUNT(*) FROM {0}", Md.FiledMeta.Table.Name);
  134. if (!string.IsNullOrEmpty(Md.WhereSql))
  135. {
  136. sql.AppendFormat(" WHERE {0}", Md.WhereSql);
  137. }
  138. qc.CommandText = sql.ToString();
  139. return qc;
  140. }
  141. /// <summary>
  142. /// ×ÔÔö³¤
  143. /// </summary>
  144. /// <returns></returns>
  145. public string GetLastInsertID()
  146. {
  147. return "SELECT @@IDENTITY;";
  148. }
  149. }
  150. }