Esempio n. 1
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"));
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public static List <CustomObject> LoadRaw(IRdbmsDataAccessor rda, CustomForm cf, IDictionary <String, Object> conditions = null, int?p = 1, int?l = 200)
        {
            var tableName = GetPrefixedTableName(ref cf);

            DataTable results = rda.Query(BuildSelectQuery(cf, conditions, p, l));
            var       retv    = new List <CustomObject>();

            for (var i = 0; i < results.Rows.Count; i++)
            {
                CustomObject co = new CustomObject();
                co.Set("Id", results.Rows[i]["Id"]);
                for (var a = 0; a < cf.Fields.Count; a++)
                {
                    co.Set(cf.Fields[a].Name, results.Rows[i][cf.Fields[a].Name]);
                }
                co.Set("RID", results.Rows[i]["RID"]);
                if (co.Get("RID") == null)
                {
                    co.Set("RID", IntEx.GenerateUniqueRID());
                }

                retv.Add(co);
            }

            return(retv);
        }
Esempio n. 3
0
        public static Object LoadByRid(IRdbmsDataAccessor rda, CustomForm cf, String rid)
        {
            DataTable results = rda.Query(BuildSelectByRidQuery(cf, rid));
            var       retv    = new List <CustomObject>();

            for (var i = 0; i < results.Rows.Count; i++)
            {
                CustomObject co = new CustomObject();
                co.Set("Id", results.Rows[i]["Id"]);
                for (var a = 0; a < cf.Fields.Count; a++)
                {
                    co.Set(cf.Fields[a].Name, results.Rows[i][cf.Fields[a].Name]);
                }
                co.Set("RID", results.Rows[i]["RID"]);
                if (co.Get("RID") == null)
                {
                    co.Set("RID", IntEx.GenerateUniqueRID());
                }

                return(co.Refine());
            }

            return(null);
        }
 public static DataTable Query(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args)
 {
     return(self.Query(transaction, Qb.Fmt(query, args)));
 }
 public static DataTable Query(this IRdbmsDataAccessor self, string query, params object[] args)
 {
     return(self.Query(Qb.Fmt(query, args)));
 }
 public static List <T> Query <T>(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args) where T : IDataObject, new()
 {
     return(self.Query <T>(transaction, (IQueryBuilder)Qb.Fmt(query, args)));
 }