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