青鸟 王云鹏老师写的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为了适应各种不同的业务需要,它应该具备哪些基本要素. 第一点.可控的事务. 事务是数据库操作 ...
随机推荐
- Linux驱动编程--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include <linux/kernel.h> #include <linux/module.h> ...
- 1.servlet hello实例---HelloServlet
1.用url调用servlet 建 web project “HelloServlet”,在src下建包com.amaker.servlet,在包下建HelloServlet.java. packag ...
- C#模拟键盘鼠标事件 SendKeys 的特殊键代码表(转)
使用 SendKeys 将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用 Send.若要等待键击启动的任何进程,请使用 SendWait. 每个键都 ...
- Linux 配置本地yum源
Linux 配置无网络状态利用yum安装软件 在有网络的情况下安装软件只需一条yum install xxx命令,例如安装gcc只需一条指令:yum install gcc 那么在没有网络的情况下该 ...
- SQL Server 2008安装和配置过程
下面我将用图解的方式,来介绍SQL Server 2008安装和配置过程,希望对大家有所帮助. 闲言少叙,直奔主题!点击setup.exe安装文件后,如果系统没有以下组件,则会出现如下提示! 安装20 ...
- Ubuntu下的网络配置(USTC)
1. 配置静态ip ubuntu的网络配置信息放在 /etc/network/interfaces 中 sudo gedit /etc/network/interfacesauto lo 下 ...
- c语言基础:各种数据类型的输出占位符
c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符: 下面是各种数据类型的输出占位符: short/int : %d ; printf("这个整数是:%d&q ...
- Asp.net 同时下载多个文件
整理自网络 下载思路是首先把多个文件进行压缩,然后再下载压缩成的压缩包 引用文件dll:ICSharpCode.SharpZipLib.dll 1. 合成下载文件夹 Protected Sub btn ...
- 在windows 7搭建xcode开发环境
前言:本文适用于没有ios开发环境(如无iphone,mac等),在windows上搭建出ios的开发环境.值得注意的是,在windows搭建的ios开发环境只能做开发测试,无法发布产品.若需要发布产 ...
- JS读取UserAgent信息并做判断
JS读取UserAgent信息并做判断 userAgent信息可以由navigator.userAgent拿到.例子: <script type="text/javascript&qu ...