青鸟 王云鹏老师写的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为了适应各种不同的业务需要,它应该具备哪些基本要素. 第一点.可控的事务. 事务是数据库操作 ...
随机推荐
- DEDECMS中,会员中心的常用知识
会员中心 引入了member/config.php,即可用$cfg_ml->fields['face'].$cfg_ml->fields['spacesta']等
- OpenDaylight之openflowjava的编译
最近因为工作需要开始研究opendaylight,首先需要的是编译项目. 因为项目代码都是在git.opendaylight.org上的,所以需要先安装git工具. 另因为opendaylight项目 ...
- 【Qt】Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)【转】
简介 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮.QLineEdit.QSpinBox.QScrollBar中的右键菜单等.通常情况下,我们软件都不会是纯英文的,那么如何 ...
- JS遇到的问题解决
1.input 里使用onclick事件,整整花了1个半小时,onclick里面直接用Location.href不需要加<script></script> <?php / ...
- mysql数据库表格导出为excel表格
在本地数据库中操作如下: 由于excel表格的编码是GBK,所以导出时要加一个设置字符编码: select * from 某个表 into outfile 'd:/文件名.xls' CHARACTER ...
- 让ImageView可以使用gif的方法
在自己的包中添加MyGifView.java(直接复制,粘贴),读取gif资源在MyGifView中第20行读取: MyGifView.java: package com.zzw.testgifuse ...
- ASP.NET Core 行军记 -----拔营启程
ASP.NET MVC 6:https://docs.asp.net/en/latest/mvc/index.html ASP.NET Core :https://docs.asp.net/en/la ...
- WPF-控件-层级控件-Menu-嵌套结构
<?xml version="1.0" encoding="utf-8" ?> <Data xmlns=""> &l ...
- matlab实现的嵌套乘法、高精度、二分法
嵌套乘法的计算: \[ P(x) = 1 - x + x^2 - x^3 + ...+ x ^ {98} - x^{99} \] function y = nest( d, c, x, b ) if ...
- iOS 进阶 第九天(0408)
0408 makekeyAndVisible解释 一个程序可以有多个Window,但只有一个窗口能够成为主窗口.如图中所示,此时的window2是主窗口.主窗口用处大了.从iOS7开始无论是主窗口还是 ...