.net 反射实例

/// <summary>
        /// 分页查询;函数中,存储过程参数含义见接口文档
        /// </summary>
        /// <param name="table_Name">表或视图名</param>
        /// <param name="Fields">字段列表,“*”为全部字段</param>
        /// <param name="limit_Condition">where条件(不用带where)</param>
        /// <param name="order_By">排序关键字(不用带order by)</param>
        /// <param name="order_Direction">查询顺序(升序asc或降序desc)</param>
        /// <param name="page_Size">每页显示条数</param>
        /// <param name="current_Page">当前页码</param>
        /// <returns>返回一个数据集</returns>
        public List<Model.Ppt> Select(string table_Name, string Fields, string limit_Condition, string order_By, string order_Direction, int page_Size, int current_Page)
        {
            SqlParameter[] para = new SqlParameter[7];

            para[0] = new SqlParameter("@TableName", table_Name);
            para[1] = new SqlParameter("@ReFieldsStr", Fields);
            para[2] = new SqlParameter("@OrderString", order_By);
            para[3] = new SqlParameter("@OrderDirection", order_Direction);
            para[4] = new SqlParameter("@WhereString", limit_Condition);
            para[5] = new SqlParameter("@PageSize", page_Size);
            para[6] = new SqlParameter("@PageIndex ", current_Page);

            List<Model.Ppt> list = new List<Model.Ppt>();
            Model.Ppt model = new Model.Ppt();
            int fieldNum = 18;
            PropertyInfo[] infos = model.GetType().GetProperties();
            string[] field = Fields.Split(',');

            using (SqlDataReader reader = SQLHelper.ExecuteReader(conn, CommandType.StoredProcedure, "PROCE_PAGECHANGE", para))
            {
                while (reader.Read())
                {
                    model = new Model.Ppt();
                    foreach (string fName in field)
                    {
                        for (int i = 0; i < fieldNum;i++ )
                        {
                            if ("*" == fName)
                            {
                                if (infos.PropertyType == Type.GetType("Systerm.String"))
                                {
                                    if (DBNull.Value != reader[infos.Name])
                                    infos.SetValue(model, (string)reader[infos.Name], null);


                                }


if (infos.PropertyType == Type.GetType("System.Int32"))
                                {
                                    if (DBNull.Value != reader[infos.Name])
                                    infos.SetValue(model, (int)reader[infos.Name], null);
                                }
                                if (infos.PropertyType == Type.GetType("System.Double"))
                                {
                                    if (DBNull.Value != reader[infos.Name])
                                    infos.SetValue(model, (double)reader[infos.Name], null);
                                }
                                if (infos.PropertyType == Type.GetType("System.Boolean"))
                                {
                                    if (DBNull.Value != reader[infos.Name])
                                    infos.SetValue(model, (bool)reader[infos.Name], null);
                                }

                                if (infos.PropertyType == Type.GetType("System.DateTime"))
                                {
                                    if (DBNull.Value != reader[infos.Name])
                                    infos.SetValue(model, (DateTime)reader[infos.Name], null);
                                }
                            }
                            else
                            {
                                if (infos.Name == fName)
                                {
                                    if (infos.PropertyType == Type.GetType("Systerm.String"))
                                    {
                                        if (DBNull.Value!=reader[fName])
                                        infos.SetValue(model, (string)reader[fName], null);
                                    }
                                    if (infos.PropertyType == Type.GetType("System.Int32"))
                                    {
                                        if (DBNull.Value != reader[fName])
                                        infos.SetValue(model, (int)reader[fName], null);
                                    }
if (infos.PropertyType == Type.GetType("System.Double"))
                                    {
                                        if (DBNull.Value != reader[fName])
                                        infos.SetValue(model, (double)reader[fName], null);
                                    }
                                    if (infos.PropertyType == Type.GetType("System.Boolean"))
                                    {
                                        if (DBNull.Value != reader[fName])
                                        infos.SetValue(model, (bool)reader[fName], null);
                                    }

                                    if (infos.PropertyType == Type.GetType("System.DateTime"))
                                    {
                                        if (DBNull.Value != reader[fName])
                                        infos.SetValue(model, (DateTime)reader[fName], null);
                                    }
                                }
                            }
                        }
                    }

                    list.Add(model);
                }
            }
            return list;

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值