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. 解决:View调用invalidate()后不刷新onDraw()

    近来学android图片处理,按照例子来,自定义一个View,之后在Activity里面手动调用该View的invalidate()后,一直无法刷新onDraw() 上网搜了一下,有两种解决办法: 一 ...

  2. web图片识别

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  3. 今年第一季全球PC出貨量同比下降5.2%

    市場調研公司Gartner上周發佈報告稱,隨著企業支出的下滑,今年第一季全球PC出貨量同比下降5.2%迪士尼美語評價.英特爾稱,第一季筆記本晶片出貨量同比增長3%,但是筆記本晶片的平均銷售價格下降了3 ...

  4. ormlite的使用方法

    ormlite是什么? 简单来说,就是我们定义一个实体类,利用这个框架,它可以帮我们吧这个实体映射到我们的数据库中,在Android中是SQLite,数据中的字段就是我们定义实体的成员变量. 官网地址 ...

  5. 数据库表A中随机X条数据满足N条件的数据插入到表B中

    select  * into c FROM a TABLESAMPLE (5 PERCENT) select top 5 per * into c from a order by newid() se ...

  6. 【Hello CC.NET】CC.NET 实现自动化集成

    一.背景 公司的某一金融项目包含 12 个子系统,新需求一般按分支来开发,测完后合并到主干发布.开发团队需要同时维护开发环境.测试环境.模拟环境(主干).目前面临最大的两个问题: 1.子系统太多,每次 ...

  7. smartComplete——轻量级的autoComplete插件,开源

    项目后端觉得autoComplete响应略慢,于是花了两天时间写了这插件,基于jQuery 1.7+,仓库地址 https://github.com/VaJoy/smartComplete ,欢迎各种 ...

  8. Python黑帽编程2.9 面向对象编程

    Python黑帽编程2.9 面向对象编程 我个人认为,计算机语言的发展,有两个方向,一个是从低到高的发展过程,在这个过程中,语言的思考和解决问题的方式是面向硬件的.硬件本质上处理的是信号,在此基础上, ...

  9. 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...

  10. RPC通信框架——RCF介绍

    现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口. ...