using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace MYHelper
{
//不加public,只有dal私有引用;
//封装执行sql server增删改查辅助类,提供相应执行sql语句和存储过程的方法
//作者:白宁超(http://www.cnblogs.com/baiboy/)
static class SQLHelper
{
//读取配置文件中的连接字符串
static string connstr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
/// <summary>
/// 执行非查询sql语句,返回受影响行数,如果执行非增删改则返回-1
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">参数数组</param>
/// <returns>影响行数res</returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] paras)
{
int res = -1;
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
if (paras != null || paras.Length > 0)
{
cmd.Parameters.AddRange(paras);
}
conn.Open();
res = cmd.ExecuteNonQuery();
}
}
return res;
}
/// <summary>
/// 执行非查询sql语句,返回受影响行数,如果执行非增删改则返回-1
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">参数数组</param>
/// <returns>影响行数res</returns>
public static int ExecuteNonParaQuery(string sql)
{
int res = -1;
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
res = cmd.ExecuteNonQuery();
}
}
return res;
}
/// <summary>
/// 执行读取数据,返回一个对象
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">参数数组</param>
/// <returns>返回一个对象o</returns>
public static object ExecuteScalar(string sql, params SqlParameter[] paras)
{
object o = null;
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
if (paras != null)
{
cmd.Parameters.AddRange(paras);
}
conn.Open();
o = cmd.ExecuteScalar();
}
}
return o;
}
/// <summary>
/// 执行查询sql语句,返回一个对象
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">查询参数</param>
/// <returns>返回DataReader对象</returns>
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] paras)
{
SqlConnection conn = new SqlConnection(connstr);
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
if (paras != null)
{
cmd.Parameters.AddRange(paras);
}
conn.Open();
try
{
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
cmd.Dispose();
throw ex;
}
}
} /// <summary>
/// 执行查询sql语句,返回一个无参数dataset对象
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras"></param>
/// <returns>返回dataset 对象</returns>
public static DataSet GetDataSetNotPara(string sql)
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//根据传来的参数。决定是sql语句还是存储过程
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(ds);
}
}
}
return ds;
} /// <summary>
/// 执行查询sql语句,返回一个无参数dataset对象
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras"></param>
/// <returns>返回dataset 对象</returns>
public static DataTable GetDataTableNotPara(string sql)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//根据传来的参数。决定是sql语句还是存储过程 conn.Open();
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
}
}
}
return dt;
} /// <summary>
/// 执行查询sql语句,返回一个dataset对象
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">查询参数</param>
/// <returns>返回dataset 对象</returns>
public static DataSet GetDataSet(string sql, params SqlParameter[] paras)
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//根据传来的参数。决定是sql语句还是存储过程
cmd.CommandType = CommandType.StoredProcedure;
//添加参数
cmd.Parameters.AddRange(paras);
conn.Open();
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(ds);
}
}
}
return ds;
}
/// <summary>
/// 可以执行sql语句或存储过程
/// </summary>
/// <param name="text"></param>
/// <param name="ct"></param>
/// <param name="param"></param>
/// <returns></returns>
public static DataTable ProcGetTable(string sql, params SqlParameter[] param)
{
DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//根据传来的参数。决定是sql语句还是存储过程 cmd.CommandType = CommandType.StoredProcedure;
//添加参数
cmd.Parameters.AddRange(param);
//cmd.Parameters.Add("@name", SqlDbType.NVarChar, 20).Value = param[0];
//cmd.Parameters.Add("@pwd", SqlDbType.NVarChar, 20).Value = param[1];
conn.Open();
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
sda.Fill(dt);
}
}
}
return dt;
} /// <summary>
/// 实现分页功能
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">参数数组(显示index页和每页显示条数size)</param>
/// <returns>查询结果</returns>
public static DataTable GetParaTable(string sql, params SqlParameter[] paras)
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlDataAdapter da = new SqlDataAdapter(sql, conn))
{
if (paras != null)
{
da.SelectCommand.Parameters.AddRange(paras);
}
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.Fill(ds);
}
}
return ds.Tables[0];
}
}
}

  

【SQLServer】DBHelper即C#数据库底层封装的更多相关文章

  1. java连接mysql底层封装

    package com.dao.db; import java.sql.Connection; import java.sql.SQLException; /** * 数据库连接层MYSQL * @a ...

  2. C# .NET更智能的数据库操作封装项目

    前面两篇文章介绍了框架的思路及里面大概的实现过程,那时候忘记上传项目,就补发一下.顺便介绍下框架使用方式,并分析下框架使用的优缺点. 先发一下前两章的链接 篇一:http://www.cnblogs. ...

  3. 【SSM 7】Mybatis底层封装思路

    一.基本概述 在前面的博客中介绍到Mybatis的逆向生成工具,为我们生成了每个实体的基本增删改查的代码,那么每个实体都是那么多的代码,我们很容易的发现,有很大的相似性.对于这部分代码,应该予以抽象封 ...

  4. SQLHelper帮助类_下(支持多数据库的封装)

    在上篇关于SQLHelper类中,主要针对SQLServer数据库进行的.在使用别的数据库,就要修改部分代码!所以今天就写一个支持多数据库的封装!主要用到枚举,读取config文件!接口的简单用法.获 ...

  5. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  6. ABP 框架 数据库底层迁移 Mysql 集群

    技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...

  7. SQLServer性能优化之---数据库级日记监控

    上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html 4.6.6.SQLServer监控 脚本示意:https://github.com/l ...

  8. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  9. 【SQLServer】“无法对数据库’XXX’ 执行删除,因为它正用于复制”的解决方法

    警告: 一个或多个现有列的 ANSI_PADDING 设置为 "off",将以 ANSI_PADDING 为 "on" 的设置重新创建 [SQLServer]& ...

随机推荐

  1. 新版startssl 免费SSL证书申请 (实测 笔记 https http2 必要条件)

    简单说明: 目前多个大型网站都实现全站HTTPS,而SSL证书是实现HTTPS的必要条件之一. StartSSL是StartCom公司旗下的.提供免费SSL证书服务并且被主流浏览器支持的免费SSL.包 ...

  2. Java 用程序给出随便大小的10 个数,序号为1-10,按从小到大顺序输出,并输出相应的序号?

    import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.uti ...

  3. DSY2287*消失之物

    Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. "要使用剩下的 N - 1 物品装满容积为 x ...

  4. VS2015安装&简单的C#单元测试

    <软件工程>开课已经三周了,三周的上课感觉就是老师教授的概念性东西少了不少,基本就是贯穿“做中学”的教学理念,三周的时间让我学到了挺多东西,很多东西都是课本没有的. 这周的任务就是安装VS ...

  5. ExtJS扩展:扩展grid之toolbar button禁用表达式

          在前一篇文章我们扩展了grid通过选中记录数来禁用toolbar上的按钮,有时候我们需要通过记录中的数据来决定是否禁用按钮,今天我们就来扩展它.       照例,最新的代码和例子都在gi ...

  6. CYQ.Data V5 数据库读写分离功能介绍

    前言 好多年没写关于此框架的新功能的介绍了,这些年一直在默默地更新,从Nuget上的记录就可以看出来: 这几天在看Java的一些东西,除了觉的Java和.NET的相似度实在太高之外,就是Java太原始 ...

  7. ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)

    本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...

  8. EDM制作要点

    EDM是Email Direct Marketing的缩写,虽然也是html,但是和我们在网页上使用的html不同,因为安全原因,各大邮箱服务商级邮件客户端都会对邮件内容进行一定程度上的处理,不会按照 ...

  9. Cygwin/babun install telnet

    最近一直在用一个windows下模拟linux的集成环境babun,特点是安装方便,使用简单,而且大部分linux程序都可以找到. 下面说一下telnet的安装: pact install inetu ...

  10. windows命令——taskmgr 1

    taskmgr.exe用于任务管理器.它显示系统中正在运行的进程. 该程序使用Ctrl+Alt+Del(一般是弹出Windows安全再点击“任务管理器”)或者Ctrl+Shift+Esc 有时候需要, ...