public abstract class SQLHelper
{
//只读的静态数据库连接字符串
//需添加引用System.Configuration;
public static readonly string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

//public static readonly string connString = "server=.;database=Weight;uid=sa;pwd=1";

#region 执行 增 删 改
/// <summary>
/// 执行 增 删 改
/// </summary>
/// <param name="sql">要执行的SQL</param>
/// <param name="param">参数</param>
/// <returns>影响行数</returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] param)
{
//实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
using (SqlConnection conn = new SqlConnection(connString))
{
//实例化命令对象,指定sql,与连接对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
//执行sql并返回影响行数
return cmd.ExecuteNonQuery();
}
}
}

/// <summary>
/// 返回首行首列对象
/// </summary>
/// <param name="sql">要执行的SQL</param>
/// <param name="param">参数</param>
/// <returns>首行首列对象</returns>
public static object ExecuteScalar(string sql, params SqlParameter[] param)
{
//实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
using (SqlConnection conn = new SqlConnection(connString))
{
//实例化命令对象,指定sql,与连接对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
//执行sql并返回影响行数
return cmd.ExecuteScalar();
}
}
}
#endregion

#region 执行 查询
/// <summary>
/// 执行 查询
/// </summary>
/// <param name="sql">要执行的SQL</param>
/// <param name="param">参数</param>
/// <returns>数据集</returns>
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] param)
{
//实例化连接对象,并指定连接字符串
SqlConnection conn = new SqlConnection(connString);
//实例化命令对象,指定sql,与连接对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
//执行sql并返回一个只进只读保持SQL连接的结果集,如果将返回的SqlDataReader关闭时也将关闭连接
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}
#endregion

#region 完成数据的查询,返回DataTable
/// <summary>
/// 完成数据的查询,返回DataTable
/// </summary>
/// <param name="sql">要执行的sql</param>
/// <param name="param">参数</param>
/// <returns>DataTable</returns>
public static DataTable GetTable(string sql, params SqlParameter[] param)
{
//实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
using (SqlConnection conn = new SqlConnection(connString))
{
//数据适配器
SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
if (param != null)
{
//批量添加参数
adp.SelectCommand.Parameters.AddRange(param);
}
//填充并返回数据表
DataTable dt = new DataTable();
adp.Fill(dt);
return dt;
}
}
#endregion

#region 根据sql获得List集合
/// <summary>
/// 根据sql获得List集合
/// </summary>
public static List<T> GetList<T>(String sql, params SqlParameter[] param)
where T : class,new()
{
List<T> entities = new List<T>();

using (SqlDataReader sdr = SQLHelper.ExecuteReader(sql))
{
while (sdr.Read())
{
T entity = new T();
//获得当前实体类型信息
Type type = typeof(T);
//遍历结果集中的每一列
for (int i = 0; i < sdr.FieldCount; i++)
{
//获得列名
String columnName = sdr.GetName(i);
//根据列名取得属性信息
PropertyInfo property = type.GetProperty(columnName);
//如果当前列的值为null则跳过
if (!(sdr.GetValue(i) is DBNull))
{
//给属性赋值
property.SetValue(entity, sdr.GetValue(i), null);
}
}
entities.Add(entity);
}
}

return entities;
}
#endregion
}

c#简单的SQLHelp的更多相关文章

  1. .Net Core 系列:2、ADO.Net 基础

    目录: 1.环境搭建 2.ADO.Net 基础 3.ASP.Net Core 基础 4.MD5.Sha256.AES 加密 5.实现登录注册功能 6.实现目录管理功能 7.实现文章发布.编辑.阅览和删 ...

  2. C#,一份超简单的数据库帮助类,SqlHelp

    简单,实用,留存. using System; using System.Collections.Generic; using System.Configuration; using System.D ...

  3. C# ADO.NET操作数据库 SqlHelp.cs类

    刚开始练习ADONET的时候,练习的一个SQLHelp.cs  数据库操作类,很简单,但是也很实用 using System; using System.Collections.Generic; us ...

  4. WinForm 水晶报表的简单使用

    今天需要做出一个水晶报表, 以前在学校的时候就看过一点点,有些印象, 但没有具体的了解过,今天百度了一下,发现这个东西相当的方便简单. 还很完美. 开发工具是VS2010,水晶报表没有内置.需要自己下 ...

  5. asp.net mvc(一) ----------简单封装成通用的List<T>集合

    asp.net mvc(一) 这些天开始学习asp.net mvc,用传统的asp.net已经快四的年了,刚开始接触asp.net mvc确认感觉有点不适应,主要体现在asp.net mvc的实现上. ...

  6. OracleHelp以及其简单应用

    我自己写的简单的OracleHelp <?xml version="1.0" encoding="utf-8" ?> <configurati ...

  7. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  8. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  9. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. delete删除数据造成归档日志增加,操作系统空间不足导致数据库hang住

    业务需求,对日志表历史数据进行清理.历史表均很大,使用delete 操作删除90天前的数据. 第一部分:快速删除数据 SQL> alter table CC.F_LOG parallel ; S ...

  2. [转载]Java中继承、装饰者模式和代理模式的区别

    [转载]Java中继承.装饰者模式和代理模式的区别 这是我在学Java Web时穿插学习Java设计模式的笔记 我就不转载原文了,直接指路好了: 装饰者模式和继承的区别: https://blog.c ...

  3. session过期,登录页面嵌套问题解决

    项目主页是框架模式时,如果登录后长时间没有活动(操作),存储在session中的登录信息过期了,这时再去进行操作时,就会出现登录页面嵌套的问题,怎么解决呢? 这里介绍一种方法,只需要加上一段javas ...

  4. AngularJS入门教程之数据绑定原理详解

    这篇文章主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人.如果你已经对Angular比较了解了,那强烈建议你直接去阅读源代码. Angular用户都想知道数据绑定 ...

  5. java 实现二分查找算法

    //二分查找算法的实现 public static int binarySearch(int[] arr,int search) { int low=0; int high=arr.length-1; ...

  6. OpenCV手工实现灰度及RGB直方图

    手工实现灰度及RGB直方图 !库 1. 灰度图像直方图 算法 1. 图片灰度化: 2. 遍历Mat,统计各灰度级的像素个数: 3. 根据opencv画点线函数,绘制坐标轴及像素分布图 源码(编译环境: ...

  7. MySQL脏读、虚读、幻读

    事务的特性: 原子性:指处于同一个事务中的多条语句是不可分割的. 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态.比如转账,转账前两个账户余额之和为2k,转账之后也应该是2K. 隔离 ...

  8. linux命令详解——eval

    shell中的eval 功能说明:重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开. ...

  9. 《浏览器工作原理与实践》 <12>栈空间和堆空间:数据是如何存储的?

    对于前端开发者来说,JavaScript 的内存机制是一个不被经常提及的概念 ,因此很容易被忽视.特别是一些非计算机专业的同学,对内存机制可能没有非常清晰的认识,甚至有些同学根本就不知道 JavaSc ...

  10. IntelliJ IDEA常用快捷键整合

    一.视图查看 Ctrl+F12 查看file,method结构图.类继承机构图 (不知道方法结构,Ctrl+F12一下,方法,参数,返回值,一清二楚的展现出来) Ctrl+shift+Alt+U   ...