【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];
         }
    }
}

  

时间: 2024-10-26 11:31:08

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

EntityFreamWork6.0 数据库底层访问封装

最近看了很多网络上面的很多人写的数据库底层,所以就复制和整理了他们的代码自己拼凑了一个,特意写下了来,希望看到博客的大哥们给提点意见.因为感觉写完以后思路很乱. 代码结构如下 SimpleDbContext,SimpleDbContext : DbContext,ISimpleDbContext DbRepository,DbRepository<T> : IDbRepository<T> where T : class UnitOfWork ,UnitOfWork : IUnit

基于“MVC”框架集设计模式,利用 DBHelper实现查询数据库功能

利用 DBHelper实现查询数据库功能 (1)连接好mysql数据库,如果无法连接,先打开mysql服务.新建一个数据库,名字为text,在新建一个数据表,名字为user,添加三个字段:用户ID.用户名和密码. (2)新建 web 项目UserManager,根据MVC模型的设计,建立四个包:beans.DAO.DBHelper.servlet.将所需要的DBHelper导入新建Web项目的DBHelper中,注意要使数据库名字保持一致.将mysql-connector-java-5.1.24

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

Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜索.特将之前使用的方法做一简单的总结.也能够在底层理解一下连接数据库的具体步骤. 实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java-5.1.7-bin.jar. 下面来看一下我所使用的数据库连接方法类: MysqlUtil.java package cn.edu

11月3日下午数据库的封装和引用 数据的分页

一.数据库的封装和引用 之前写代码都是通过mysql取结果写的,这样写的缺点是每次要用数据时都需要写sql参数,并且要写很多份,而且当数据库换了,或者密码改了就需要修改每一个文件里的和mysql有关的参数,结果会很复杂.下面就把数据库的操作封装成一个类,每一次操作的时候去调用封装的类. 以后就用封装类的方法写,防止换数据库.换电脑.或者是放到服务器上以后直接从封装的类里面更改数据库名称,用户名.密码等.就不需要改页面里的内容了. 1.查询语句 第1步:建一个封装类的文件DBDA.class.ph

ASP.NET底层封装HttpModule实例---FormsAuthentication类的分析

HttpModule是用来注册HttpApplication事件的,实现IHttpModule接口的托管代码模块可以访问该请求管道的所有事件.那么对于我们最常用的ASP.NET Forms身份验证模块是如何底层封装处理的呢? 今天过了一遍ASP.NET生命周期,以前的时候喜欢做各种应用,小程序等,渐渐地就觉得真没意思,因为只要你懂点基本的语法,会用相关的库亦或是框架就行,如果出错就是些许的细节错误,严格来说这不锻炼人,这有点像是温水煮青蛙,当然不能说这不好,这可以帮我们熟练地掌握框架的使用,增加

【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 &#39;xxxxx&#39; 版本 611。请将该数据库升级为最新版本。)

sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的兼容性(经过尝试,此步骤可以省略) 停掉sqlserver 服务,将需要附件的mdf文件替换掉创建数据生成的mdf,删除掉对应的ldf文件 再启动sqlserver 服务 执行

本地无sqlserver服务下操作数据库 之GSQL

作为程序员无论是我们写的各种MIS系统还是游戏都离不开数据的存取操作,正如我们前几天在VS下做的一MIS系统,现在纠结. 如果是C/S或B/S模型就好了,可是需求不是,没办法,顾客是上帝...他们的需求是本地化对数据库就直接进行操作(在不安装sqlserver的情况),弟兄们有解决的办法吗,求支招??? 众里寻他千百度,GSQL却在我内心深处.唉呀,现在觉得有盼头了,问题大概能解决了,接下来就下载了 GSQL_6.5.0.4 下载链接  http://www.powerip.net/GSQL/G

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

警告: 一个或多个现有列的 ANSI_PADDING 设置为 "off",将以 ANSI_PADDING 为 "on" 的设置重新创建 [SQLServer]"无法对数据库'XXX' 执行删除,因为它正用于复制"的解决方法 USE masterEXEC sp_removedbreplication 'YDBS_MFQJ_HomeWorksBook'GO

ios sqlite3数据库的封装-自己封装的,针对锁死database is closed的解决和预防

在数据库创建时应判断数据是否存在(不为空nil) if(sqlite==nil){// 判断数据库是否存在,若存在就不创建,若不存在才创建,以防数据库锁死 if (SQLITE_OK == sqlite3_open(dpPath.UTF8String , &sqlite)) { NSLog(@"数据库创建成功"); }else{ NSLog(@"数据库创建失败"); } } #import "SqlManager.h" #import &