/// <summary> /// 获取按条件更新的SQL /// </summary> /// <param name="data">成员名数组</param> /// <returns>更新字符串</returns> public string GetUpdate(string[] data) { string update = string.Empty; for (int i = 0; i < data.Length; i += 1) { update = EString.Contact(update, ",", SqlAnalyser._open, Model.GetColumnName(data[i]), SqlAnalyser._close, "=@", data[i]); } update = update.Remove(0, 1); return(EString.Contact("UPDATE ", SqlAnalyser._open, Model.Table, SqlAnalyser._close, " SET ", update, " WHERE"));; }
private static void GetSqlString(SqlModel model) { StringBuilder insertFields = new StringBuilder(); StringBuilder insertValues = new StringBuilder(); StringBuilder updateFieldAndValues = new StringBuilder(); StringBuilder checkRepeate = new StringBuilder(); StringBuilder getModelId = new StringBuilder(); string table = StringBuilderExtention.Contact(_open, model.Table, _close, " "); int i = 0; int length = model.Struction.Members.Count; MemberInfo[] members = model.Struction.Members.ToArray(); while (i < length) { string memberName = members[i].Name; string mapMemberName = model.GetColumnName(memberName); if (!model.IgnoreMembers.Contains(memberName)) { insertFields = insertFields.Append(",", _open, mapMemberName, _close); insertValues = insertValues.Append(",@", memberName); updateFieldAndValues = updateFieldAndValues.Append(",", _open, mapMemberName, _close, "=@", memberName); getModelId = getModelId.Append(" AND ", _open, mapMemberName, _close, "=@", memberName); if (model.RepeateMembers.Contains(memberName)) { checkRepeate = checkRepeate.Append(" AND ", _open, mapMemberName, _close, "=@", memberName); } } i += 1; } insertFields = insertFields.Remove(0, 1); insertValues = insertValues.Remove(0, 1); updateFieldAndValues = updateFieldAndValues.Remove(0, 1); if (checkRepeate.ToString().Length > 5) { checkRepeate = checkRepeate.Remove(0, 5); } getModelId = getModelId.Remove(0, 4); model.Update = StringBuilderExtention.Contact("UPDATE ", table, "SET ", updateFieldAndValues.ToString()); model.Select = StringBuilderExtention.Contact("SELECT * FROM ", table.Remove(table.Length - 1, 1)); model.Delete = StringBuilderExtention.Contact("DELETE FROM ", table); model.Insert = StringBuilderExtention.Contact("INSERT INTO ", table, "(", insertFields.ToString(), ") VALUES (", insertValues.ToString(), ")"); System.Diagnostics.Debug.WriteLine(model.Update); model.ConditionDelete = StringBuilderExtention.Contact(model.Delete, "WHERE "); model.ConditionSelect = StringBuilderExtention.Contact(model.Select, " WHERE "); model.ConditionUpdate = StringBuilderExtention.Contact(model.Update, " WHERE "); model.SelectAll = model.Select; if (model.PrimaryKey != null) { StringBuilder byPrimaryKey = new StringBuilder(); string realPrimaryKey = model.GetColumnName(model.PrimaryKey); string conditionByPrimaryKey = byPrimaryKey.Append(_open, realPrimaryKey, _close, "=@", model.PrimaryKey).ToString(); model.GetPrimaryKey = StringBuilderExtention.Contact("SELECT ", _open, realPrimaryKey, _close, " FROM ", table, "WHERE", getModelId.ToString()); model.Update = StringBuilderExtention.Contact(model.ConditionUpdate, conditionByPrimaryKey); model.Select = StringBuilderExtention.Contact(model.ConditionSelect, conditionByPrimaryKey); model.Delete = StringBuilderExtention.Contact(model.ConditionDelete, conditionByPrimaryKey); } model.CheckRepeate = StringBuilderExtention.Contact("SELECT COUNT(*) FROM ", table, "WHERE ", checkRepeate.ToString()); }