public static string GetSql_QueryRecord(this CoreGenDescription desc) { Contract.Requires(desc != null); if (desc.SelectCommand == null) { throw new InvalidOperationException("no select command"); } var sb = new StringBuilder(); sb.Append("SELECT "); sb.Append(string.Join(", ", typeof(PerformanceRecord).GetProperties().Select(_ => _.Name))); sb.Append(" FROM "); sb.AppendLine(desc.GetSql_TableName()); sb.Append("WHERE "); var pairs = new List <string>(); foreach (var setcmd in desc.SetCommands) { pairs.Add(setcmd.AttrName + "=" + WrapSqlValue(setcmd.AttrValue, setcmd.CILType)); } foreach (var csetcmd in desc.CSetCommands) { pairs.Add(csetcmd.AttrName + "=" + WrapSqlValue(csetcmd.AttrValue, csetcmd.CILType)); } sb.AppendLine(string.Join(" AND ", pairs)); sb.AppendLine(";"); return(sb.ToString()); }
public static string GetSql_CreateTable(this CoreGenDescription desc) { Contract.Requires(desc != null); if (desc.SelectCommand == null) { throw new InvalidOperationException("no select command"); } var sb = new StringBuilder(); sb.Append("CREATE TABLE IF NOT EXISTS "); sb.Append(desc.GetSql_TableName()); sb.Append(" ("); var primkeys = new List <string>(); foreach (var setcmd in desc.SetCommands) { sb.Append(setcmd.AttrName); sb.Append(" "); string type = GetSqlTypeOfCoregenProp(setcmd.CILType); sb.Append(type); sb.AppendLine(" NOT NULL, "); primkeys.Add(setcmd.AttrName); } foreach (var csetcmd in desc.CSetCommands) { sb.Append(csetcmd.AttrName); sb.Append(" "); string type = GetSqlTypeOfCoregenProp(csetcmd.CILType); sb.Append(type); sb.AppendLine(" NOT NULL, "); primkeys.Add(csetcmd.AttrName); } var prprops = typeof(PerformanceRecord).GetProperties(); foreach (var pi in prprops) { sb.Append(pi.Name); sb.Append(" "); sb.Append(GetSqlTypeOfCoregenProp(pi.PropertyType)); sb.AppendLine(", "); } sb.Append("PRIMARY KEY ("); sb.Append(string.Join(", ", primkeys)); sb.Append(")"); sb.AppendLine(");"); return(sb.ToString()); }
public static string GetSql_InsertRecord(this CoreGenDescription desc, PerformanceRecord prec) { Contract.Requires(desc != null); Contract.Requires(prec != null); if (desc.SelectCommand == null) { throw new InvalidOperationException("no select command"); } var sb = new StringBuilder(); sb.Append("INSERT INTO "); sb.Append(desc.GetSql_TableName()); var keys = new List <string>(); var values = new List <string>(); foreach (var setcmd in desc.SetCommands) { keys.Add(setcmd.AttrName); values.Add(WrapSqlValue(setcmd.AttrValue, setcmd.CILType)); } foreach (var csetcmd in desc.CSetCommands) { keys.Add(csetcmd.AttrName); values.Add(WrapSqlValue(csetcmd.AttrValue, csetcmd.CILType)); } var prprops = typeof(PerformanceRecord).GetProperties(); foreach (var pi in prprops) { keys.Add(pi.Name); values.Add(WrapSqlValue(pi.GetValue(prec, new object[0]))); } sb.Append(" ("); sb.Append(string.Join(", ", keys)); sb.Append(") VALUES("); sb.Append(string.Join(", ", values)); sb.AppendLine(");"); return(sb.ToString()); }