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. sonar+Jenkins 构建代码质量自动化分析平台

    1.Sonar 介绍 Sonar 是一个用于管理代码质量的开源工具,可以分析代码中的bug和漏洞以及Code Smells,支持20多种编程语言的检测,如java,c/c++,python,php等语 ...

  2. jacascript 基础数据类型(一)

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 数据类型有 number.boolean.string.object.null.undefined; un ...

  3. (八)装配Bean(2)

    二.在Java类中进行显式的装配 显式配置有两种: 1. 一种是在java(本文讲解)   2. 另一种是xml配置文件(第一章有讲) 案例一: 使用java显式装配+@autowired自动装配的方 ...

  4. vue 集成 vis-network 实现网络拓扑图

    vis.js  网站 https://visjs.org/ vs  code 下安装命令 npm install vis-network 在vue  下引入 vis-network组件 const v ...

  5. Sublime Text 开发神器相关 插件安装 功能介绍

    无法安装更多见http://blog.csdn.net/freshlover/article/details/44261229/ Sublime Text 3 安装插件管理 Package Contr ...

  6. Java 18套JAVA企业级大型项目实战分布式架构高并发高可用微服务电商项目实战架构

    Java 开发环境:idea https://www.jianshu.com/p/7a824fea1ce7 从无到有构建大型电商微服务架构三个阶段SpringBoot+SpringCloud+Solr ...

  7. For... in 及 For… of 及 forEach

    For... in 及 For… of let arr = ["a","b"]; for (let a in arr) { console.log(a) // ...

  8. vue的自定义指令

    点击元素之外触发函数 <template> <div v-clickoutside="clickItemOut"></div> </tem ...

  9. 【vue开发】 父组件传值给子组件时 ,watch props 监听不到解决方案

    解决方案: watch:{ data:{ immediate:true, handler:function(){ } }} 示例:  

  10. GC案例

    FGC----jmap -histo:live导致 线上某服务的老年代配置了CMS,但却在gc.log发现连续Full GC的问题.JVM参数配置如下: -XX:+UseCMSInitiatingOc ...