【SQLServer】DBHelper即C#数据库底层封装
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#数据库底层封装的更多相关文章
- java连接mysql底层封装
package com.dao.db; import java.sql.Connection; import java.sql.SQLException; /** * 数据库连接层MYSQL * @a ...
- C# .NET更智能的数据库操作封装项目
前面两篇文章介绍了框架的思路及里面大概的实现过程,那时候忘记上传项目,就补发一下.顺便介绍下框架使用方式,并分析下框架使用的优缺点. 先发一下前两章的链接 篇一:http://www.cnblogs. ...
- 【SSM 7】Mybatis底层封装思路
一.基本概述 在前面的博客中介绍到Mybatis的逆向生成工具,为我们生成了每个实体的基本增删改查的代码,那么每个实体都是那么多的代码,我们很容易的发现,有很大的相似性.对于这部分代码,应该予以抽象封 ...
- SQLHelper帮助类_下(支持多数据库的封装)
在上篇关于SQLHelper类中,主要针对SQLServer数据库进行的.在使用别的数据库,就要修改部分代码!所以今天就写一个支持多数据库的封装!主要用到枚举,读取config文件!接口的简单用法.获 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- ABP 框架 数据库底层迁移 Mysql 集群
技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...
- SQLServer性能优化之---数据库级日记监控
上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html 4.6.6.SQLServer监控 脚本示意:https://github.com/l ...
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
- 【SQLServer】“无法对数据库’XXX’ 执行删除,因为它正用于复制”的解决方法
警告: 一个或多个现有列的 ANSI_PADDING 设置为 "off",将以 ANSI_PADDING 为 "on" 的设置重新创建 [SQLServer]& ...
随机推荐
- Flask 重新认识
总是觉的学习东西有点猴子掰玉米的感觉.今天就重新再掰一次吧. Installation: 安装之前建议先安装virtualenv,这个东东是帮助你在多个python版本之间保持同步,不至于python ...
- Kafka使用入门教程
转载自http://www.linuxidc.com/Linux/2014-07/104470.htm 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自 ...
- 防御sql注入
1. 领域驱动安全 领域驱动安全是一种代码设计方法.其思想是将一个隐式的概念转化为显示,个人认为即是面向对象的方法,将一个概念抽象成一个类,在该类中通过方法对类的属性进行约束.是否是字符串,包含什么字 ...
- Node.js 框架
Node.js的是一个JavaScript平台,它允许你建立大型的Web应用程序. Node.js的框架平台使用JavaScript作为它的脚本语言来构建可伸缩的应用. 当涉及到Web应用程序的开发 ...
- 使用JDBC调用存储过程
DELIMITER $$ DROP PROCEDURE IF EXISTS `jdbc`.`addUser` $$ ),in birthday date,in money float,out pid ...
- 初试Office 365企业版E3
Microsoft Office 365 团队给了所有现任的MVP 12个月的微软 Office 365 企业 E3 订阅,今天激活账号并试用了一下,发现非常强大,本文简要介绍下Office 365 ...
- 使用EF取数据库返回的数据
目录 一.取oracle自定义函数返回的自定义类型. 一.取oracle自定义函数返回的自定义类型. 1.首先创建一个函数返回自定义类型集合 --1.建立自定义类型 CREATE OR REPLACE ...
- ReactJs笔记
中文教程:http://reactjs.cn/ 实例: http://www.ruanyifeng.com/blog/2015/03/react.html
- [译] 给PHP开发者的PHP源码-第一部分-源码结构
文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxel ...
- Javascript分号,加还是不加?
关于这个问题,网上已经有很多人讨论过了,我先说说自己对这个问题的回答:加!(但非必须) 有些人写代码,懒得加分号,除非是迫不得已才勉强放一个分号上去.如果你可以保证你写的代码不出现任何 bug,那当然 ...