日前必须使用sql语句来查询数据库 但每次你不想写一个数据库中读取所以查了下反射

我想用反映一个实体的所有属性,然后,基于属性的查询和分配值

首先,须要一个实体类才干反射出数据库相应的字段,

可是開始写属性的时候,我看见特性蛮好用的,能够实现切面编程.

我也查了特性,可是网上这方面资料不多,大多都是介绍,仅仅能自己慢慢摸索了.

  1. [Model.Context.SelectContext]
  2. public class Entity
  3. {
  4. public int ID { get; set; }
  5. public string Name { get; set; }
  6. }

弄一个实体类,设置一个特性

  1. Context.SelectContext

能够表示能够用来查询数据

接下来定义SQLHelp类查询

  1. <span style="white-space:pre"> </span>/// <summary>
  2. /// 查询集合
  3. /// </summary>
  4. /// <param name="T">查询的实体 new()</param>
  5. /// <param name="sql">sql语句</param>
  6. /// <param name="result">生产实体运行的操作</param>
  7. /// <param name="param">可变參数</param>
  8. /// <returns>返回集合</returns>
  9. public static IEnumerable<T> SelectReader<T>(string sql, Func<System.Data.Common.DbDataReader, T> result, params System.Data.Common.DbParameter[] param)
  10. where T : class
  11. {
  12. using (SqlConnection con = new SqlConnection(connString))
  13. {
  14. SqlCommand cmd = new SqlCommand(sql, con);
  15. cmd.Connection.Open();
  16. if (param != null && param.Length > 0)
  17. cmd.Parameters.AddRange(param);
  18. SqlDataReader dr = cmd.ExecuteReader();
  19. var list = new List<T>();
  20. while (dr.Read())
  21. {
  22. T t = result(dr);//产生实体类托付,依据sqlDateReader产生一个实体类
  23. if (t != null)
  24. list.Add(t);
  25. }
  26. dr.Close();
  27. return list;
  28. }
  29. }

一个查询方法依据sql语句来返回一个集合

下一篇写sql辅助类,用来定义一个sql操作的模板

全部源代码 http://download.csdn.net/detail/qq6648208281/7939613

下一篇 http://blog.csdn.net/qq6648208281/article/details/39379271

版权声明:本文博客原创文章。博客,未经同意,不得转载。

功能和形式的反思sql声明 一个的更多相关文章

  1. 大约sql声明优化

    最近做的mysql数据库优化,并sql声明优化指南.我写了一个小文件.这种互相鼓励有关! 数据库参数获得的性能优化升级都在一起只占数据库应用系统的性能改进40%左右.其余60%的系统性能提升所有来自相 ...

  2. 交易应用-运行多个SQL声明

    事务具有原子性.要么不运行.要么全运行.一旦成功运行永久保存.而这些正是因为事务的原子性和对数据库的持久性形成的.下面是一个关于统一给数据库中的数据改动的批量操作,利用到事务. TODO:批量改动数据 ...

  3. SQL声明变量并赋值

    declare @studentid int //声明一个int型变量 );//设置变量值,tclass 为任意表,classid 为表中任一字段 if(@studentid is not null) ...

  4. SQL存在一个表而不在另一个表中的数据, 更新字段为随机时间

    --更新字段为随机时间 86400秒=1天 UPDATE dl_robot ), ,GETDATE()) )   SQL存在一个表而不在另一个表中的数据   方法一 使用 not in ,容易理解,效 ...

  5. DELPHI声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?

    DELPHI声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?比如我定义个变量 var p:Pchar;如果这个变量声明为全局变量,需要分配内存吗?分配为局部变量,需要分为内存吗?为什么 ...

  6. 打印Ibatis最后,SQL声明

    做项目时,满足这一需求.我们希望最终打印出在数据库运行SQL声明,这些都普遍遇到了一些一般性问题.我会去Appfuse,结果这次没有成功.它是有相关的配置,可是好像没实用.我也就没有深查下去.我想这种 ...

  7. (转找了好久)实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上

    目的:实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上) 准备工作 1.共享资源服务器为 ShareServer,IP地址为:192.168. ...

  8. 实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上

    转载:http://www.cnblogs.com/top5/archive/2012/12/10/2812133.html 目的:实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC) ...

  9. 面试6 在c#中如何声明一个类不能被继承

    C#通过关键字 sealed 可以声明一个类型不能被继承. 设计中应该为所有不被作为基类的类型添加sealed关键字,用以避免各种来自继承的易产生的错误.

随机推荐

  1. 关于java socket(转)

    1. 关于new Socket()中参数的理解 Server端: 调用ServerSocket serverSocket = new ServerSocket(1287,2);后Server端打开了指 ...

  2. SSL/TLS协议运行机制的概述(转)

    互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...

  3. POJ 1113 || HDU 1348: wall(凸包问题)

    传送门: POJ:点击打开链接 HDU:点击打开链接 以下是POJ上的题: Wall Time Limit: 1000MS   Memory Limit: 10000K Total Submissio ...

  4. 【Linux】CentOS系统

    版本号:CentOS release 5.7 1)查看系统版本号 cat  /etc/readhat-release 2)安装软件 wget  资源链接 make make install 在线安装: ...

  5. poj 1160 Post Office (间隔DP)

    Post Office Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15966   Accepted: 8671 Desc ...

  6. Nyoj 城市平乱(图论)

    描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...

  7. SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示

    SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示   1,与MVC集成 见http://simpleinjector.codeplex.com/wikipage? ...

  8. WebApi路由及版本控制

    public class WebApiControllerSelector : IHttpControllerSelector { private const string NamespaceKey ...

  9. javascript的语法作用域你真的懂了吗

    原文:javascript的语法作用域你真的懂了吗 有段时间没有更新了,思绪一下子有点转不过来.正应了一句古话“一天不读书,无人看得出:一周不读书,开始会爆粗:一月不读书,智商输给猪.”.再加上周五晚 ...

  10. string.format大全

    字符串的数字格式 stringstr1 =string.Format("{0:N1}",56789);               //result: 56,789.0 strin ...