zoukankan      html  css  js  c++  java
  • 一、手写ORM实现数据库查询

    ORM:对象关系映射Object Relational Mapping(简称ORM)
    如果数据库对应几十个实体类就是几十个表该怎么查询呢
    利用反射加泛型手写ORM
    建好数据库Student
    先配置好数据库连接
     <connectionStrings>
        <add name="Student" connectionString="server=.; Database=Student;uid=sa;pwd=123;"/>
      </connectionStrings>
    创建sqlserverDBhelper类,编写方法:
     public T select<T>(int id)
            {
                Type type = typeof(T);//获取到具体类型
               string  filedstring=string.Join(",",type.GetProperties().Select(c => string.Format("[{0}]", c.Name)));//根据type获取到属性名称,用逗号连接起来便于查询
                string tableName = type.Name;//获取到表名
                object obj = Activator.CreateInstance(type);//初始化字段赋原始值
                string sql = string.Format("select {0} from {1} where ID={2} ",filedstring,tableName,id);
                SqlCommand cmd = new SqlCommand(sql,conn);
                if(conn.State==System.Data.ConnectionState.Closed)
                {
                    conn.Open();
                }
                SqlDataReader reader=cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                if(reader.Read())//如果读取到数据
                {
                    foreach (var item in type.GetProperties())//获取属性
                    {
                        object ovule = reader[item.Name];//通过reader获取字段名称的值
                        item.SetValue(obj, ovule);//给每一个字段赋值
                        Console.WriteLine("{0}:{1}", item.Name, item.GetValue(obj));
                    }
                }
                conn.Close();
                return (T)obj;
            }
    局部变量信息:
    调用:
    sqlserverDBhelper sqlserverD = new sqlserverDBhelper();//实例化
     sqlserverD.select<Student>(1); //指定实体类Student  ID参数
    效果:
     
  • 相关阅读:
    Java DVD管理项目
    Java 幸运抽奖项目
    VS中C#读取app.config数据库配置字符串的三种方法(转)
    IE浏览器让人呕吐的事情!
    你不知道的Javascript小结
    sdfdfd
    mvc中viewData和TempData的区别
    ajax最头疼的问题浏览器兼容
    javascript事件冒泡和捕获
    C# 模拟自动登录的一种简单方式
  • 原文地址:https://www.cnblogs.com/cg-ww/p/12760751.html
Copyright © 2011-2022 走看看