예제 #1
0
        public string UpdateStatements(UpdateStatementModel updateStatements, out List <string> columnValues)
        {
            columnValues = new List <string>();

            List <string> columnResults = new List <string>();

            string result = this.BuildUpdateSql(updateStatements, out columnResults);

            columnValues.AddRange(columnResults.Distinct());

            return(result);
        }
        internal static string UpdateStatements(UpdateStatementModel updateStatements, out List <string> columnValues)
        {
            DatabaseTypeEnum buildType = Connections.Instance.DatabaseModel.DatabaseType;

            IDataToSQL sql = null;

            switch (buildType)
            {
            case DatabaseTypeEnum.SQL:
            default:

                sql = new MsSQL();

                return(sql.UpdateStatements(updateStatements, out columnValues));
            }
        }
예제 #3
0
        internal void UpdateUpdateStatement(UpdateStatementModel updateStatement)
        {
            if (updateStatement == null)
            {
                return;
            }

            string itemKey = this.BuildItemKey(updateStatement.TriggerTable, updateStatement.TriggerColumn);

            if (this.updateStatements.ContainsKey(itemKey))
            {
                this.updateStatements.Remove(itemKey);
            }

            if (updateStatement.Values.Count == 0 ||
                updateStatement.WhereValus.Count == 0)
            {
                return;
            }

            this.updateStatements.Add(itemKey, updateStatement);
        }
예제 #4
0
        private string BuildUpdateSql(UpdateStatementModel statement, out List <string> columnValues)
        {
            columnValues = new List <string>();

            StringBuilder whereCaluse = new StringBuilder();

            foreach (UpdateValueModel item in statement.WhereValus)
            {
                if (item.IsDatabaseValue)
                {
                    string[] columnSplit = item.UpdateValue.Split('.', StringSplitOptions.None);

                    whereCaluse.Append($"{item.ColumnName} = '[[{columnSplit[1]}]]' AND ");

                    columnValues.Add(columnSplit[1]);
                }
                else
                {
                    whereCaluse.Append($"{item.ColumnName} = '{item.UpdateValue}' AND ");
                }
            }

            whereCaluse.Remove(whereCaluse.Length - 4, 4);

            StringBuilder result = new StringBuilder();

            result.AppendLine($"IF EXISTS (SELECT 1");
            result.AppendLine($"            FROM [{statement.UpdateTableName}]");
            result.AppendLine($"            WHERE {whereCaluse.ToString()})");
            result.AppendLine("BEGIN");

            result.AppendLine($"    UPDATE [{statement.UpdateTableName}]");

            result.Append("    SET ");

            foreach (UpdateValueModel valueItem in statement.Values)
            {
                if (valueItem.IsDatabaseValue)
                {
                    string[] columnSplit = valueItem.UpdateValue.Split('.', StringSplitOptions.None);

                    result.Append($"{valueItem.ColumnName} = '[[{columnSplit[1]}]]', ");

                    columnValues.Add(columnSplit[1]);
                }
                else
                {
                    if (valueItem.UpdateValue == Constants.SqlGetDate)
                    {                       // No Single Quates
                        result.Append($"{valueItem.ColumnName} = {valueItem.UpdateValue}, ");
                    }
                    else
                    {
                        result.Append($"{valueItem.ColumnName} = '{valueItem.UpdateValue}', ");
                    }
                }
            }

            result.Remove(result.Length - 2, 2);

            result.AppendLine($"    WHERE {whereCaluse.ToString()}");

            result.AppendLine("END");
            result.AppendLine("ELSE");
            result.AppendLine("BEGIN");

            result.AppendLine($"    INSERT INTO {statement.UpdateTableName} (");

            foreach (UpdateValueModel valueItem in statement.Values)
            {
                result.Append($"{valueItem.ColumnName}, ");
            }

            result.Remove(result.Length - 2, 2);

            result.AppendLine(")");

            result.AppendLine($"    VALUES (");

            foreach (UpdateValueModel valueItem in statement.Values)
            {
                if (valueItem.IsDatabaseValue)
                {
                    string[] columnSplit = valueItem.UpdateValue.Split('.', StringSplitOptions.None);

                    result.Append($"'[[{columnSplit[1]}]]', ");

                    columnValues.Add(columnSplit[1]);
                }
                else
                {
                    if (valueItem.UpdateValue == Constants.SqlGetDate)
                    {   // No Single Quates
                        result.Append($"{valueItem.UpdateValue}, ");
                    }
                    else
                    {
                        result.Append($"'{valueItem.UpdateValue}', ");
                    }
                }
            }

            result.Remove(result.Length - 2, 2);

            result.AppendLine(")");

            result.AppendLine("END");

            return(result.ToString());
        }
예제 #5
0
 internal string SQLUpdates(UpdateStatementModel updateStement, out List <string> columnValues)
 {
     return(ObjectCreator.UpdateStatements(updateStement, out columnValues));
 }
 public void UpdateUpdateStatement(UpdateStatementModel updateStatement)
 {
     this.SqlManager.UpdateUpdateStatement(updateStatement);
 }