示例#1
0
        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);
        }
示例#2
0
        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);
        }