黑马程序员技术交流社区

标题: 关于SQLHelper中的泛型方法 [打印本页]

作者: 林成彬    时间: 2013-12-19 19:06
标题: 关于SQLHelper中的泛型方法
本帖最后由 林成彬 于 2013-12-20 09:00 编辑

之前一直在学习传智的.NET视频,其中到后面所用到的SQLHelper的泛型方法,实在搞不懂,求指导,代码如下
        public static List<T2> ExcuteList<T2>(string strSelectCmd, params SqlParameter[] paras)
        {
            //1.创建连接通道
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                //2.创建适配器
                SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
                //2.1设置查询命令的参数
                da.SelectCommand.Parameters.AddRange(paras);
                //3.数据表
                DataTable dt = new DataTable();
                //4.将数据查询并填充到数据表中
                da.Fill(dt);
                //5.将DataTable转成泛型集合List<T2>
                if (dt.Rows.Count > 0)
                {
                    //6.创建泛型集合对象
                    List<T2> list = new List<T2>();
                    //7.遍历数据行,将行数据存入 实体对象中,并添加到 泛型集合中list
                    foreach (DataRow row in dt.Rows)
                    {
                        //留言:等学完反射后再讲~~~~!
                        //7.1先获得泛型的类型(里面包含该类的所有信息---有什么属性啊,有什么方法啊,什么字段啊....................)
                        Type t = typeof(T2);
                        //7.2根据类型创建该类型的对象
                        T2 model = (T2)Activator.CreateInstance(t);// new MODEL.Classes()
                        //7.3根据类型 获得 该类型的 所有属性定义
                        PropertyInfo[] properties = t.GetProperties();
                        //7.4遍历属性数组
                        foreach (PropertyInfo p in properties)
                        {
                            //7.4.1获得属性名,作为列名
                            string colName = p.Name;
                            //7.4.2根据列名 获得当前循环行对应列的值
                            object colValue = row[colName];
                            //7.4.3将 列值 赋给 model对象的p属性
                            //model.ID=colValue;
                            p.SetValue(model, colValue, null);
                        }
                        //7.5将装好 了行数据的 实体对象 添加到 泛型集合中 O了!!!
                        list.Add(model);
                    }
                    return list;
                }
            }
            return null;
        }


作者: 雨中恋人    时间: 2013-12-19 21:25
命名规则:
*:这个变量名必须要有意义。变量名中能够出现的特殊符号只有下划线
1 必须以“字母”_或@符号开头.--不要以数字开头
2 后面可以跟任意“字母”、数字、下划线.
注意:
1)你起的变量名不要与c#系统中的关键字重复.
2)在c#中,大小写是敏感的.
3)同一个变量名不允许重复定义(先这么认为,不严谨)

变量的命名规范
1:Camal命名规范(骆驼命名规范)
要求:变量的首单词的首字母要小写,其余每个单词的首字母都要大写。多用于给变量命名。numberOne
2:Pascal命名规范
要求:每个单词的首字母都要大写,其余字母小写。多用于给方法或者类命名。
作者: 雨中恋人    时间: 2013-12-19 21:29
发错人了
作者: V_John    时间: 2013-12-20 20:53
雨中恋人 发表于 2013-12-19 21:29
发错人了

额。。。。

作者: V_John    时间: 2013-12-20 20:55
这只是一种封装,把该用到的类进行泛型的封装,我是这么认为的,广泛的类型,额。。。这得慢慢理解吧,我也有点说不好,请大神回复,我顶




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2