zoukankan      html  css  js  c++  java
  • 编写属于自己的SQLHelper类,泛型+反射

            自己一直都是学习使用asp.net mvc框架+linQ的,所以对于ado.net基本上一无所知,最近接了个小项目,所以打算学习+用ado.net来完成。
            首先就想到了,写一个通用点SQLHelper类来辅助完成数据库的操作。

    1.定义一个类:public class SQLHelper<T> where T : class, new()
            说明:SQLHelper有一个T的泛型类型,T属于class,new(),否则T就不能T t =new T()这样使用new关键字了!

    2.之后就是数据库的链接和关闭等操作:
    Code

    3.对数据库进行读写操作。
    Code
    解释:
            //判断是SQL语句中参数的值对象是否为空
            //例如:new{Id=1,Name="Test"}
                if (obQuery != null)
                {
                //获取SQL语句中参数的值对象中的属性类型和值
                    PropertyInfo[] pis = obQuery.GetType().GetProperties();
                //循环遍历对象中的属性
                    foreach (var p in pis)
                    {
                  //利用反射将Id,Name等值填充到SQL语句中的参数中
                        command.Parameters.Add(new SqlParameter(p.Name, p.GetValue(obQuery, null)));
                    }
                }

    查询操作中,返回的是SQLDataReader对象,如何获取我们所需要的列表,分页,单个实体呢?
    4.返回列表List<T>,还是利用泛型+反射
    Code

    5.返回分页,获取PagesList<T>
    5.1。分页实体类:
    Code

    5.2。实现分页,返回PagesList<T>
    Code

    6.获取单个实体类:T
    Code

    7.调用方法:ResumeTM为数据库表的实体类
    Code

    哈哈。。写好了。。。有什么写得不好的,希望大家多多指教。拍拍砖。。。

  • 相关阅读:
    POJ2425 A Chess Game[博弈论 SG函数]
    POJ1740A New Stone Game[组合游戏]
    Vijos P1196吃糖果游戏[组合游戏]
    CF724D. Dense Subsequence[贪心 字典序!]
    CF724B. Batch Sort[枚举]
    CF731C. Socks[DFS 贪心]
    CF733D Kostya the Sculptor[贪心 排序]
    CF733C Epidemic in Monstropolis[模拟 构造 贪心]
    洛谷P1991无线通讯网[kruskal | 二分答案 并查集]
    NOIP2015斗地主[DFS 贪心]
  • 原文地址:https://www.cnblogs.com/floyd/p/1559936.html
Copyright © 2011-2022 走看看