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 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); }
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))); }