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

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

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

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

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

    [Model.Context.SelectContext]
public class Entity
{
public int ID { get; set; }
public string Name { get; set; }
}

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

Context.SelectContext

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

接下来定义SQLHelp类查询

<span style="white-space:pre">	</span>/// <summary>
/// 查询集合
/// </summary>
/// <param name="T">查询的实体 new()</param>
/// <param name="sql">sql语句</param>
/// <param name="result">生产实体运行的操作</param>
/// <param name="param">可变參数</param>
/// <returns>返回集合</returns>
public static IEnumerable<T> SelectReader<T>(string sql, Func<System.Data.Common.DbDataReader, T> result, params System.Data.Common.DbParameter[] param)
where T : class
{
using (SqlConnection con = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Connection.Open();
if (param != null && param.Length > 0)
cmd.Parameters.AddRange(param);
SqlDataReader dr = cmd.ExecuteReader();
var list = new List<T>();
while (dr.Read())
{
T t = result(dr);//产生实体类托付,依据sqlDateReader产生一个实体类
if (t != null)
list.Add(t);
}
dr.Close();
return list;
}
}

一个查询方法依据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. Catalan数总结

    财产: 前20条目:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, ...

  2. YARN简短的建筑

    从Hadoop的0.23版本号,MapReduce进行了全面的彻底的变革.也就是我们今天看到的MapReduce 2.0或者我们也能够叫它YARN. 老版本号的JobTracker有两个基本的功能:资 ...

  3. CentOS7 安装NFS SSH免密码登陆

    配置5台虚拟机 ip为192.168.1.160 - 164,使用160作为共享服务器 使用yum安装nfs 以及rpcbind,有很多文章介绍,这里不再赘述 一.启动服务 1.启动rpcbind s ...

  4. 为什么 Linux Mint 比 Ubuntu好?

    Linux Mint由Linux Mint Team团队于2006年开始发行,是一份基于Debian和Ubuntu的Linux发行版.其目标是提供一种更完整的即刻可用体验,这包括提供浏览器插件.多媒体 ...

  5. Rabbitmq 加入用户訪控制台(guest无法登陆控制台问题)

    对于rabbitmq的guest用户无法訪问控制台的问题,是由于rabbitmq做了安全措施,禁止guest登陆控制台.须要我们自己创建用户进行登陆 1,运行加入用户命令 rabbitmqctl ad ...

  6. hdu 3695 Computer Virus on Planet Pandora(AC自己主动机)

    题目连接:hdu 3695 Computer Virus on Planet Pandora 题目大意:给定一些病毒串,要求推断说给定串中包括几个病毒串,包括反转. 解题思路:将给定的字符串展开,然后 ...

  7. easyUI的combobox实现级联

    先简介下combobox: easyUI重写了select,取而代之的是combobox,有例如以下几种方式能够创建一个combobox 1.使用select标签,并加上class="eas ...

  8. 【spring教程之二】spring注射剂xml构造方法参数

    1.上述续,假设你想注入bean当文件,传递给构造函数的参数.主要的变化是需要spring.xml配置文件来配置. <?xml version="1.0" encoding= ...

  9. Struts1——离BeanUtils看struts其原理1

    在Struts中非常典型的特点就是使用了ActionForm来搜集表单数据,可是搜集到的表单数据所有都是String类型的.假设我们直接拿来使用我们会面临一个非常麻烦的问题就是频繁的类型装换. Str ...

  10. Android dumpsys命令的使用

    Android提供的dumpsys工具能够用于查看手机中的应用程序和系统服务信息与状态,手机连接电脑后能够直接命令行运行adb shell dumpsys 查看全部支持的Service可是这样输出的太 ...