static SqlCommand CreateSelectCommand <T>(Database Db, DbFilter[] Filters) where T : DbTableEntry { GetTableData <T>(out string TableName); if (Filters == null) { Filters = new DbFilter[] { } } ; string FilterStr = ""; if (Filters.Length > 0) { FilterStr = "where " + string.Join(" and ", Filters.Select(F => string.Format("({0} = @{0})", F.Name))); } SqlCommand Cmd = new SqlCommand(string.Format("select * from {0} {1}", TableName, FilterStr), Db.Con); for (int i = 0; i < Filters.Length; i++) { Cmd.Parameters.AddWithValue(Filters[i].Name, Filters[i].Value); } return(Cmd); }
static SqlCommand CreateUpdateCommand <T>(Database Db, T Value, DbFilter[] Filters) where T : DbTableEntry { GetTableData <T>(out string TableName); if (Filters == null) { Filters = new DbFilter[] { } } ; string FilterStr = ""; if (Filters.Length > 0) { FilterStr = "where " + string.Join(" and ", Filters.Select(F => string.Format("({0} = @{0})", F.Name))); } PropertyInfo[] Props = GetProps <T>().Where(P => !ContainsFilterByName(Filters, P.Name)).ToArray(); if (Props.Length == 0) { throw new Exception("No values to set!"); } string ValueStr = string.Join(", ", Props.Select(P => string.Format("{0} = @{0}", P.Name))); SqlCommand Cmd = new SqlCommand(string.Format("update {0} set {1} {2}", TableName, ValueStr, FilterStr), Db.Con); for (int i = 0; i < Filters.Length; i++) { Cmd.Parameters.AddWithValue(Filters[i].Name, Filters[i].Value); } for (int i = 0; i < Props.Length; i++) { object Val = Props[i].GetValue(Value); if (Val == null) { Val = DBNull.Value; } Cmd.Parameters.AddWithValue(Props[i].Name, Val); } return(Cmd); }