Exemplo n.º 1
0
        public static void Save(IRdbmsDataAccessor rda, CustomForm cf, CustomObject value)
        {
            var    tableName = GetPrefixedTableName(ref cf);
            Object getId     = value.Get("Id");

            if (getId is long && (long)getId > 0)
            {
                rda.Execute(BuildUpdateQuery(cf, value));
            }
            else
            {
                rda.Execute(BuildInsertQuery(cf, value));
            }
        }
Exemplo n.º 2
0
        public static void CheckStructure(IRdbmsDataAccessor da, CustomForm form)
        {
            var tableName = GetPrefixedTableName(ref form);

            //
            DataTable schemaInfo = da.Query(
                new Qb($"SELECT * FROM information_schema.tables WHERE table_schema='{da.SchemaName}' AND table_name='{tableName}'"));

            // Se a tabela não existir, criar
            if (schemaInfo.Rows.Count < 1)
            {
                var creationQuery = BuildCreationQuery(form);
                da.Execute(creationQuery);
            }
            else
            {
                DataTable columnsInfo = da.Query(
                    new Qb($"SELECT * FROM information_schema.columns WHERE table_schema='{da.SchemaName}' AND table_name='{tableName}'"));

                for (var i = 0; i < form.Fields.Count; i++)
                {
                    bool exists = false;
                    int  cIndex = -1;
                    for (var c = 0; c < columnsInfo.Rows.Count; c++)  // C++!!!
                    {
                        if (columnsInfo.Rows[c]["COLUMN_NAME"] as String == form.Fields[i].Name)
                        {
                            exists = true;
                            cIndex = c;
                            break;
                        }
                    }
                    if (!exists)
                    {
                        da.Execute(new Qb($"ALTER TABLE {tableName} ADD COLUMN {SqlType(form.Fields[i])} DEFAULT NULL;"));
                    }
                    else
                    {
                        ulong? sz     = (ulong?)columnsInfo.Rows[cIndex]["CHARACTER_MAXIMUM_LENGTH"];
                        String dbtype = (String)columnsInfo.Rows[cIndex]["DATA_TYPE"];
                        if (dbtype.ToLower() == "varchar" && sz != (ulong)form.Fields[i].Size)
                        {
                            da.Execute(new Qb($"ALTER TABLE {tableName} CHANGE COLUMN {form.Fields[i].Name} {form.Fields[i].Name} {SqlType(form.Fields[i])} DEFAULT NULL"));
                        }
                    }
                }
            }
        }
 public static int Execute(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args)
 {
     return(self.Execute(transaction, (IQueryBuilder)Qb.Fmt(query, args)));
 }