Example #1
0
        /// <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"));;
        }
Example #2
0
        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());
        }