青鸟 王云鹏老师写的SqlHelper 泛型方法,反射,支持实体类
1: using System;2: using System.Collections.Generic;3: using System.Linq;4: using System.Text;5: using System.Data;6: using System.Data.SqlClient;7: using System.Reflection;8:9: namespace DAL10: {11: public class SqlHelper12: {13: private const string CONNECTION_STRING = @"server=.\sql2008;uid=sa;pwd=;database=BBSDB";14:15: private static T ExecuteReader<T>(SqlDataReader dr)16: {17: T obj = default(T);18: obj = Activator.CreateInstance<T>();//T obj = new T();//instance19: Type type = typeof(T);//get T class type by T's Name20: PropertyInfo[] propertyInfos = type.GetProperties();//get current Type's all properties21: int fieldCount = dr.FieldCount;//get column count22: for (int i = 0; i < fieldCount; i++)23: {24: string fieldName = dr.GetName(i);//get column25: foreach (PropertyInfo propertyInfo in propertyInfos)26: {//per property infoname27: string properyName = propertyInfo.Name;//get property name28: if (string.Compare(fieldName, properyName, true) == 0)29: {//column's name == propery's name30: object value = dr.GetValue(i);//get column's value31: if (value != null && value != DBNull.Value)32: {33: propertyInfo.SetValue(obj, value, null);//set property's value34: }35: break;36: }37: }38: }39: return obj;40: }41:42: public static List<T> ExecuteList<T>(string cmdText, CommandType commandType, params SqlParameter[] args)43: {44: List<T> list = new List<T>();45: using (SqlConnection con = new SqlConnection(CONNECTION_STRING))46: {47: using (SqlCommand cmd = new SqlCommand(cmdText, con))48: {49: cmd.CommandType = commandType;50: cmd.Parameters.AddRange(args);51: con.Open();52: using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))53: {54: while (dr.Read())55: {56: //dr.GetInt32(0);57: //dr.GetString(1);58: T obj = ExecuteReader<T>(dr);59: list.Add(obj);60: }61: }62: }63: }64: return list;65: }66:67: public static T ExecuteEntity<T>(string cmdText, CommandType commandType, params SqlParameter[] args)68: {69: T obj = default(T);70: using (SqlConnection con = new SqlConnection(CONNECTION_STRING))71: {72: using (SqlCommand cmd = new SqlCommand(cmdText, con))73: {74: cmd.CommandType = commandType;75: cmd.Parameters.AddRange(args);76: con.Open();77: using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))78: {79: while (dr.Read())80: {81: obj = ExecuteReader<T>(dr);82: break;83: }84: }85: }86: }87: return obj;88: }89:90: public static int ExecuteNonQuery(string cmdText, CommandType commandType, params SqlParameter[] args)91: {92: int result = -1;93: using (SqlConnection con = new SqlConnection(CONNECTION_STRING))94: {95: using (SqlCommand cmd = new SqlCommand(cmdText, con))96: {97: cmd.Parameters.AddRange(args);98: cmd.CommandType = CommandType.StoredProcedure;99: con.Open();100: result = cmd.ExecuteNonQuery();101: }102: }103: return result;104: }105:106: }107: }108:
青鸟 王云鹏老师写的SqlHelper 泛型方法,反射,支持实体类的更多相关文章
- java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...
- [原创]如何写好SqlHelper
所有写数据库应用的都会遇到SqlHelper.每个人实现的也不同,网上现成的例子也很多.但在实际操作中,大部分都不实用.什么样的才是实用的?答:适合应用场景的! 下面来介绍下我写的一个关于Oracle ...
- 引用 Session详解 作者:郎云鹏
本文转载自leeldy<Session详解 作者:郎云鹏> 引用 leeldy 的 Session详解 作者:郎云鹏 目录: 一.术语session 二.HTTP协议与状态保持 三.理 ...
- 实体写到redis写不进去--误把类当成实体类
之前一直都把实体写入redis都没有问题,今天再次这样干,结果却是怎么写都写不进去,redis里的值老是为空 最后才发现把类当成了实体类,当然写不进去了. 把类: /// <summary> ...
- 多年前写的DataTable与实体类的转换,已放github
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 代码 UnitTest G ...
- 我写了一个java实体类,implements了Serializable接口,然后我如何让serialversionUID自动生成
写了一个java实体类,implements了Serializable接口,让serialversionUID自动生成方法: 1.点击类旁边的警告符号: 2.选择Add generated seria ...
- MySQL写delete语句时不支持表别名
今天写代码时发现了下面一个比较奇怪的问题: 有下面的删除数据的SQL ; 这个sql本来没有问题,但是在MySQL中执行时会报错 ; 原因是 MySQL写delete语句时不支持表别名,困扰了我一会儿 ...
- 【springboot】【idea】实体类免写get、set等方法,使用lombok依赖和插件的@Data类注解
需求,一个实体类,规范写法一定要对应的get.set方法,有必要还要重写toString方法.虽然可以快速生成get.set等方法,但是如果要添加或减少成员属性时就得重新生成get.set等方法. 而 ...
- [原创]如何写好SqlHelper 之终章
精简的美丽...... 标题有点大.但是,我觉得99%的接近了. 好了,下面我们来说说一个SqlHelper为了适应各种不同的业务需要,它应该具备哪些基本要素. 第一点.可控的事务. 事务是数据库操作 ...
随机推荐
- Template_17_metaprogram
1,模板实例化机制是一种基本的递归语言机制,可以用于在编译期执行复杂计算.2,枚举值和静态常量在原来的C++编译器中,在类声明的内部,枚举值是声明"真常值"(常量表达式)的唯一方法 ...
- Boost库实现线程池学习及线程实现的异步调用
A.Boost线程池实现 参考自: Boost库实现线程池实例 原理:使用boost的thread_group存储多个线程,使用bind方法将要处理的函数转换成线程可调用的函数进行执行:使用队列存储待 ...
- 在线生成ICO图标、站标
网上一搜有很多,找了两个比较好用的,分别是http://ico.storyren.com/和http://www.ico.la/,前面的那个好像更好点.上传png.jpg.或gif格式的图片,按自己需 ...
- 【转】asp.net mvc3 简单缓存实现sql依赖
asp.net mvc3 简单缓存实现sql依赖 议题 随 着网站的发展,大量用户访问流行内容和动态内容,这两个方面的因素会增加平均的载入时间,给Web服务器和数据库服务器造成大量的请求压力.而大 ...
- Windows Phone 中查找可视化树中的某个类型的元素
private void StackPanel_Tap(object sender, TappedRoutedEventArgs e) { //获取到的对象是ListBoxItem ListBoxIt ...
- JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中, ...
- java中对集合对象list的几种循环访问
java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...
- PHP合并数组保留key值
PHP合并数组,键值不变 尝试了好几个合并数组的函数, 但是都是把key值重置, 导致key值丢失(因为key值是要用到的) 大大说, 最好用数组的相关函数, 网上随意找了下, 还是没找到. 因为 ...
- Linux man 用法小结(Linux指令学习笔记)
今天买了一本<<Linux命令行与shell脚本编程大全>>,想利用暑假放假的时间系统的学习一下 Linux的shell脚本.今天看了一下书,才发现我之前学习,把Linux s ...
- MDX : Non Empty v/s NonEmpty
MDX : Non Empty v/s NonEmpty User Rating: / 50 PoorBest Written by Jason Thomas Friday, 07 May 20 ...