青鸟 王云鹏老师写的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为了适应各种不同的业务需要,它应该具备哪些基本要素. 第一点.可控的事务. 事务是数据库操作 ...
随机推荐
- 基于Httpfs访问HDFS的C++实现
Httpfs是hadoop2.x中hdfs项目的内置应用,基于tomcat和jesery,对外提供完备HDFS操作的RESTful接口,无需安装客户端,可方便实现数据交互,如从windows访问存储在 ...
- spring MVC项目中,欢迎页首页根路径到底是怎么设置的
0. 问题: 如何改mvc中项目的欢迎页,或者叫做根路径 一个东西快弄完了,就剩下一个问题,应该是个小问题.就是mvc项目的欢迎页,怎么给改下呢. 这个项目是通过mvn建立的,整个项目的原型就是spr ...
- arduino入门学习实现语音控制LED灯
需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val ...
- VisualVM 监控
一:服务器端: 找到 jstatd 所在目录 find / -name jstatd 在此目录下添加 jstatd.all.policy 文件 cat /usr/java/jdk1.7.0_51/bi ...
- 通过xsd生成xml类
步骤二:使用VS2010 Tools中的命令提示窗口 如下图所示 执行结果:生成myschema.xsd对应的C#类文件. 命令剖析: /c 生成对应的类文件 /l:cs 类文件使用C#语言 /ou ...
- [C/C++] 各种C/C++编译器对UTF-8源码文件的兼容性测试(VC、GCC、BCB)
在不同平台上开发C/C++程序时,为了避免源码文件乱码,得采用UTF-8编码来存储源码文件.但是很多编译器对UTF-8源码文件兼容性不佳,于是我做了一些测试,分析了最佳保存方案. 一.测试程序 为了测 ...
- unity--IOC框架资料整理
今天在网上找了一些unity资料研究,出了好多问题,编译无法通过,经人指点总算成功编译运行,做个笔记,整理如下: 一.下载unity: 二.在项目中添加Microsoft.Practices.Unit ...
- 5、WPF实现简单计算器-非常适合初学者练习
Sample Calculator 这是微软社区WPF的一个示例,在源程序的基础上我进行了一点点修改,非常适合初学者练习,详细代码解释. 源程序的下载地址 http://code.msdn.micro ...
- STM32调试大法 之 串口通讯
开发过程经常需要查看某些特定参数.通常的方法可以使用paintf进行打印输出,观察具体的变量值.STM32内部集成有USART的串口功能,可以通过串口直接输出到电脑(上位机).使用非常方便,基本不需要 ...
- WPF-控件-将ListBox条目水平排列
<Grid Margin="6"> <ListBox> <!--ItemsPanel--> <ListBox.ItemsPanel> ...