青鸟 王云鹏老师写的SqlHelper 泛型方法,反射,支持实体类
2024-08-22 08:09:37
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:
最新文章
- CentOS 7网卡网桥、绑定设置
- 大家一起撸代码之——Hibernate各种主键生成策略与配置详解
- 关于迭代器中IEnumerable与IEnumerator的区别
- Android文件操作
- 第三次作业——将排课Excel导入系统
- vijos p1523 贪吃的九头龙 思考思考再思考,就荒废了4小时
- 分布式领域CAP理论
- hbase-site.xml 参数设置
- asp.net使用MVC4框架基于NPOI做导出数据到Excel表
- Java设计模式之职责链设计模式
- linux nvme的sendfile流程
- gradle用户目录本地库移动设置
- MySQL定时器
- Linux下MySql的配置文件my.cnf详细 讲解
- GUI常用对象介绍3
- Linux镜像源
- kettle学习笔记(九)——子转换、集群与变量
- vue-awesome-swiper使用纪实
- 不知不觉vs2012 update 4出来了
- 5、main方法详解