using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
    /// <summary>
    /// 连接数据库类
    /// </summary>
    public class SqlServerDBHelper
    {
        /// <summary>
        /// 连接数据库
        /// </summary>
        /// <returns></returns>
        public static SqlConnection GetConnection()
        {
            string conString = System.Configuration.ConfigurationManager.ConnectionStrings["connstring"].ToString();//定义连接数据库字符集
            return new SqlConnection(conString);//返回连接数据库对象
        }
        /// <summary>
        /// 用数据填充的方法查询
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sql"></param>
        /// <param name="pares"></param>
        /// <returns></returns>
        public DataSet GetDataSet(CommandType type, string sql, params SqlParameter[] pares)
        {
            SqlConnection con = GetConnection();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            da.SelectCommand.CommandType = type;
            if (pares != null)
            {
                foreach (SqlParameter pare in pares)
                {
                    da.SelectCommand.Parameters.Add(pare);
                }
            }
            da.Fill(ds);
            return ds;
        }

public DataSet GetDataSet(string sql, params SqlParameter[] pares)
        {
            return GetDataSet(CommandType.Text, sql, pares);
        }

public SqlDataReader GetSqlDataReader(CommandType type, string sql,out SqlConnection con, params SqlParameter[] pares)
        {
            con = GetConnection();
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.CommandType = type;
            con.Open();
            if (pares != null)
            {
                foreach (SqlParameter pare in pares)
                {
                    cmd.Parameters.Add(pare);
                }
            }
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }

public SqlDataReader GetSqlDataReader(string sql,out SqlConnection con, params SqlParameter[] pares)
        {
            return GetSqlDataReader(CommandType.Text, sql,out con, pares);
        }

public bool MidfyDB(CommandType type, string sql, params SqlParameter[] pares)
        {
            bool falg = false;
            SqlConnection con = GetConnection();
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.CommandType = type;
            if (pares != null)
            {
                foreach (SqlParameter pare in pares)
                {
                    cmd.Parameters.Add(pare);
                }
            }
            SqlTransaction trans = null;
            try
            {
                con.Open();
                trans = con.BeginTransaction();
                cmd.Transaction = trans;
                cmd.ExecuteNonQuery();
                trans.Commit();
                falg = true;
            }
            catch (Exception e)
            {
                trans.Rollback();
                throw e;
            }
            finally
            {
                con.Close();
            }
            return falg;
        }

public bool MidfyDB(string sql, params SqlParameter[] pares)
        {
            return MidfyDB(CommandType.Text, sql, pares);
        }

/// <summary>
        /// 查询聚合函数类
        /// </summary>
        /// <param name="type">数据库操作的类型 如:StoredProcedure(存储过程)、Text(文本)</param>
        /// <param name="sql">数据库操作字符集</param>
        /// <param name="paras">查询数据库时所用的参数</param>
        /// <returns>object(一般为单个值)</returns>
        public object GetScalar(CommandType type, string sql, params SqlParameter[] paras)
        {
            SqlConnection con = GetConnection();//创建数据集对象
            SqlCommand cmd = new SqlCommand(sql, con);//操作数据库对象
            cmd.CommandType = type;//数据库操作的类型
            //如果参数不为空
            if (paras != null)
            {
                //遍历参数数组
                foreach (SqlParameter para in paras)
                {
                    cmd.Parameters.Add(para);//给操作数据库对象加上参数
                }
            }
            con.Open();//打开数据库连接
            object obj = cmd.ExecuteScalar();//返回一个一行一列的植
            con.Close();//关闭数据库连接
            return obj;
        }

public object GetScalar(string sql, params SqlParameter[] paras)
        {
            return GetScalar(CommandType.Text, sql, paras);
        }

#region 数据填充DataTable

public static DataTable DataFill(SqlCommand cmd)
        {
            DataTable dt = new DataTable();
            cmd.Connection = GetConnection();
            SqlDataAdapter _da = new SqlDataAdapter(cmd);
            _da.Fill(dt);
            return dt;
        }
        #endregion

//public DataTable DateTel(string sql)
        //{
        //    SqlConnection con = GetConnection();
        //    SqlCommand cmd = new SqlCommand(sql, con);
        //    SqlDataAdapter da = new SqlDataAdapter(cmd);
        //    DataTable dt = new DataTable();
        //    da.Fill(dt);
        //    return dt;
        //}

internal DataSet GetDataSet(string sql, int UID)
        {
            throw new NotImplementedException();
        }

public static SqlCommand GetCommand(string text)
        {
            SqlCommand cmdObject = new SqlCommand();
            cmdObject.CommandText = text;
            return cmdObject;
        }

public static void PreparedCommand(SqlCommand cmd, SqlParameter[] pars)
        {
            foreach (SqlParameter p in pars)
            {
                cmd.Parameters.Add(p);
            }
        }
    }
}

转载于:https://www.cnblogs.com/wuhuisheng/archive/2010/07/02/1770053.html

SqlServerDBHelper类相关推荐

  1. 反射应用二:利用反射加配置文件实现多数据库的访问

    在上一篇文章中讲解了什么是反射,以及利用反射可以获取程序集里面的哪些内容.在平时的项目中,可能会遇到项目需要使用多种数据库,这篇文章中将会讲解如何利用反射实现访问多种数据库. 项目整体结构如下图所示: ...

  2. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  3. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  4. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  5. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  6. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  7. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  8. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  9. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

最新文章

  1. xuanke java_wangshangxuankexitong - WEB源码|JSP源码/Java|源代码 - 源码中国
  2. 计算机二级python基础知识总结-计算机二级python 知识点篇(程序的控制结构)...
  3. python中将字符变为大写_Python笔记(一)
  4. ROS Kinetic或ROS melodic下安装MoveIt!出现的问题:无法定位软件包 ros-kinetic-moveit-full或ros-melodic-moveit-full
  5. html登入弹框插件,基于jQuery的弹出框插件
  6. markdown-Macdown
  7. Java多线程面试题与答案
  8. 用Anaconda3搭建自己的TensorFlow环境
  9. 你不知道的Event Loop
  10. mysql运维技巧_​mysql初级运维使用技巧
  11. iOS 版微信可以改微信号;传腾讯计划入股爱奇艺;Qt 6.0 发布首个预览版本| 极客头条...
  12. 【转载】 C#使用Newtonsoft.Json组件来反序列化字符串为对象
  13. 用钩子程序实现根据一个表的字段更新另一个表的字段
  14. Python爬虫:使用Appium在移动端抓取微博数据
  15. vue h5微信公众号网页(总结)
  16. scan函数函数用法详解
  17. SecureCRT 8.3破解
  18. latex 定理环境,引理,定义,自定义 proof 环境
  19. R-S编码译码-缩短码(10,6)
  20. c++ vtable 深入解析

热门文章

  1. English最俗语法大全
  2. 获取两个数的最大值,判断是否相等;
  3. windows内核情景分析---进程线程1
  4. 153. 寻找旋转排序数组中的最小值 golang
  5. linux 线程学习初步01
  6. 超级计算机 极光,万亿次极光系列代数运算微处理器来袭,国产超算已经一骑绝尘?-控制器/处理器-与非网...
  7. 【剑指offer】_06 变态跳台阶
  8. C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))
  9. Linux信号实现精确到微秒的sleep函数:通过sigsuspend函数解决时序竞态问题
  10. 【C/C++】关键字static