public string GetCommand(string field, uint where, object value)
        {
            var builder = new SQLUpdate();

            builder.Table = "creature_template";
            builder.AddValue(field, value);
            builder.AddWhere("entry", where);
            return(builder.Build());
        }
        public void TestSQLUpdate()
        {
            var values = new Dictionary <Row <TestDataOnePK>, RowList <TestDataOnePK> >
            {
                { _valuesOnePk.ElementAt(0), _conditionsOnePk },
                { _valuesOnePk.ElementAt(1), _conditionsOnePk }
            };

            var update = new SQLUpdate <TestDataOnePK>(values);

            Assert.AreEqual("UPDATE `test_data_one_p_k` SET `ID`=4, `TestInt1`=5, `TestString1`='string2', `NoQuotes`=@CGUID WHERE `ID` IN (1, 2);" + Environment.NewLine +
                            "UPDATE `test_data_one_p_k` SET `ID`=6, `TestInt1`=7, `NoQuotes`=@CGUID+1 WHERE `ID` IN (1, 2);" + Environment.NewLine,
                            update.Build());
        }
Пример #3
0
        public bool Save()
        {
            ModelInfo info = GetInfo(this.GetType());

            string[] fields = info.Fillables.Select <ModelField, String>(x => x.GetField()).ToArray();
            object[] values = info.Fillables.Select <ModelField, Object>(x => x.GetValue(this)).ToArray();

            if (info.PrimaryField != null)
            {
                object primaryVal = info.PrimaryField.GetInfo().GetValue(this);
                if (primaryVal != null)
                {
                    SQLUpdate update = Database.PrimaryDB.Update(info.Table.Name)
                                       .Where(info.PrimaryField.GetField(), primaryVal);

                    for (int i = 0; i < fields.Count(); i++)
                    {
                        update.Set(fields[i], values[i]);
                    }

                    return(update.Execute());
                }
            }

            bool result = Database.PrimaryDB.Insert(info.Table.Name, fields)
                          .Values(values)
                          .Execute();

            if (!result || info.PrimaryField == null)
            {
                return(result);
            }

            ResultMap results = Database.PrimaryDB.ExecuteQuery("SELECT LAST_INSERT_ID() as id;");

            if (results == null)
            {
                return(false);
            }

            info.PrimaryField.SetValue(this, results.Results[0].Get("id"));
            return(true);
        }
Пример #4
0
        public virtual string SerializeUpdate(SQLUpdate update)
        {
            if (String.IsNullOrEmpty(update.TableName))
                throw new Exceptions.DatabaseObjectsException("TableName property has not been set.");
            else if (update.Fields.Count == 0)
                throw new Exceptions.DatabaseObjectsException("Field values have not been set.");
            else if (update.Fields.Any(field => String.IsNullOrEmpty(field.Name)))
                throw new Exceptions.DatabaseObjectsException("Field Name has not been set.");

            var fieldNameAndValues = String.Join(", ", update.Fields.Select(field => SerializeIdentifier(field.Name) + " = " + SerializeValue(field.Value)).ToArray());

            var tokens = new TokenSerializer();

            tokens.Add("UPDATE");
            tokens.Add(SerializeIdentifier(update.TableName));
            tokens.Add("SET");
            tokens.Add(fieldNameAndValues);

            if (update.Where != null && !update.Where.IsEmpty)
            {
                tokens.Add("WHERE");
                tokens.Add(SerializeConditions(update.Where));
            }

            return tokens.ToString();
        }
Пример #5
0
 public Result Update(SQLUpdate sql)
 {
     return(Update(sql.TableName, sql.KVs, sql.Wh));
 }
Пример #6
0
        public void TestSQLUpdate()
        {

            var values = new Dictionary<Row<TestDataOnePK>, RowList<TestDataOnePK>>
            {
                {_valuesOnePk.ElementAt(0), _conditionsOnePk},
                {_valuesOnePk.ElementAt(1), _conditionsOnePk}
            };

            var update = new SQLUpdate<TestDataOnePK>(values);
            Assert.AreEqual("UPDATE `test_data_one_p_k` SET `ID`=4, `TestInt1`=5, `TestString1`='string2' WHERE `ID` IN (1, 2);" + Environment.NewLine +
                            "UPDATE `test_data_one_p_k` SET `ID`=6, `TestInt1`=7 WHERE `ID` IN (1, 2);" + Environment.NewLine,
                update.Build());
        }