public static  class SQLHelper
{
    //获取连接字符串,,首先添加对configuration的引用
    private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
    //ExecuteNonQuery方法----非查询的方法
    public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
    {
        //1、创建连接对象
        using (SqlConnection conn=new SqlConnection(connStr))
        {
        //2、创建执行对象
            using (SqlCommand cmd=new SqlCommand(sql,conn))
            {
        //3、判断添加占位符集合
                if (parameters!=null)
                {
         cmd.Parameters.AddRange(parameters);
                }
        //4、执行操作前一步   打开连接
                conn.Open();
                //5、执行相应的操作
                return cmd.ExecuteNonQuery();
            }
        }
    }
    //ExecuteScalar方法-----返回查询结果的第一行第一列
    public static object ExecuteScalar(string sql,params SqlParameter[] parameters)
    {
        //1、创建连接对象
        using(SqlConnection conn=new SqlConnection(connStr))
        {
        //2、创建执行对象
            using(SqlCommand cmd=new SqlCommand(sql,conn))
            {
        //3、判断并添加占位符集合
                if(parameters!=null)
                {
                    cmd.Parameters.AddRange(parameters);
                }
        //4、执行语句前一部打开链接
                conn.Open();
        //5、执行相应操作
                return cmd.ExecuteScalar();
            }
        }
    }
//返回DataTable的方法
        public static DataTable ExecuteDataTable(string sql,params SqlParameter[] parameters)
        {
            DataTable table=new DataTable();
            //直接交给sqldataadapter执行
            using (SqlDataAdapter adapter=new SqlDataAdapter(sql,connStr))
            {
                //判断并添加占位符集合(利用存储过程),,返回结果
                if(parameters!=null)
                {
                    adapter.SelectCommand.Parameters.AddRange(parameters);
                }
                //将结果填充到table
                adapter.Fill(table);
            }
            return table;
        }

    public static SqlDataReader ExecuteReader(string sql,params SqlParameter[] parameters)
    {
        //因为每次都执行返回一行,不用using,,,创建连接
        SqlConnection  conn=new SqlConnection(connStr);
        //创建执行对象
        using(SqlCommand cmd=new SqlCommand(sql,conn))
        {
            if(parameters!=null)
            {
                cmd.Parameters.AddRange(parameters);
            }
            try
            {
                //判断连接对象是否是连接状态,不是就打开
                if(conn.State==ConnectionState.Closed)
                {
                    conn.Open();
                }
                //在连接打开的前提下执行读取命令,,随着conn的关闭而关闭
               return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
                //没有可读数据的时候关闭连接变释放资源
            catch
            {
                conn.Close();
                conn.Dispose();
                throw;
            }
        }
    }
}


SQLHelper---赵晓虎(简洁,全面)的更多相关文章

  1. asp.net 建多个项目实现三层的实例——读取一张表中的记录条数

    学习asp.net两周,通过学习发现,.net和php之间的区别还是蛮大的,比php要复杂一些,开始学习的有些吃力,后来跟着传智播客里的老师学习,渐渐的学到了一些东西. 今天要记录一下.net里的简单 ...

  2. JavaScript函数的4种调用方法详解

    在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造 ...

  3. QL Server 实用脚本

    use MyFirstDB; -- 主要内容 -- SQL Server 实用脚本 -- 1.case语句 -- 2.子查询 -- 3.连接查询 -- 4.脚本变量与流程控制(选择与循环等) -- 5 ...

  4. Delegate(委托与事件)

    Delegate可以当它是一个占位符,比如你在写代码的时候并不知道你将要处理的是什么.你只需要知道你将要引入的参数类型和输出类型是什么并定义它即可.这就是书本上所传达的方法签名必须相同的意思. 系统自 ...

  5. XML文件注意问题

    一.Elements和Descendant Elements 相当于root节点下的子节点,Desendant元素相当于root节点下的所有子节点(包括root.elments下个子节点也包括root ...

  6. JavaScript高级之函数的四种调用形式

    主要内容 分析函数的四种调用形式 弄清楚函数中this的意义 明确构造函对象的过程 学会使用上下文调用函数 了解函数的调用过程有助于深入学习与分析JavaScript代码. 本文是JavaScript ...

  7. 你不知道的JavaScript--Item8 函数,方法,构造函数调用

    1.函数调用 Function绝对是JavaScript中的重中之重.在JavaScript中,Function承担了procedures, methods, constructors甚至是class ...

  8. qconbeijing2017

    http://2017.qconbeijing.com/schedule 第一天 (2017年4月16日/星期日)   签到 专题 主题演讲 快速进化的容器生态 微服务与 DevOps 最佳实践(厂商 ...

  9. python基础学习(一)

    一,Python介绍 1,python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打 ...

随机推荐

  1. 【Android Demo】获取指定网页的页面源代码

    1.直接上效果图 2.代码 主要就是工具类HtmlService.java: import java.io.ByteArrayOutputStream; import java.io.InputStr ...

  2. 常用中文字体 Unicode 编码

    各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 t ...

  3. UESTC 424 AreYouBusy --混合背包

    混合三种背包问题. 定义:dp[i][k]表示体积为k的时候,在前i堆里拿到的最大价值. 第一类,至少选一项,dp初值全赋为负无穷,这样才能保证不会出现都不选的情况.dp[i][k] = max(dp ...

  4. HDU 4454 Stealing a Cake --枚举

    题意: 给一个点,一个圆,一个矩形, 求一条折线,从点出发,到圆,再到矩形的最短距离. 解法: 因为答案要求输出两位小数即可,精确度要求不是很高,于是可以试着爆一发,暴力角度得到圆上的点,然后求个距离 ...

  5. UVA 12377 Number Coding --DFS

    题意:给一串数字,第一个数是Num的话,要使后面的数字组成Num个数,而且为不降的,将这Num个数分配到9个素因子上作为指数,问能组成多少个不同的数 解法:dfs一遍,看后面的数字能组成Num个不降数 ...

  6. js confirm()方法的使用方法实例

    今天学习了js 中confirm的使用方法,confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框. 如果用户点击确定按钮,则 confirm() 返回 true.如果点击取消按 ...

  7. JavaScript 中的原型声明和用法总结

    下面是自己写的一个关于js的拖拽的原型声明:代码如下 需要注意的问题包括: 1.this的指向到底是指向谁--弄清楚所指的对象 2.call()方法的使用 3.直接将父级原型赋给子级与使用for将其赋 ...

  8. QTP学习一添加默认的注释及调用外部vbs文件

    一.添加默认注释 1.新建一个TXT文档,将要添加的注释写在文档中 2.再将文档名改为:ActionTemplate.mst 3.将文件放到QTP安装目录(默认为:C:\Program Files\H ...

  9. IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中

    需求:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl” 请编写程序读取数据内容,把数据排序后写入ss.txt中. 分析: A:读取文件中的数据 B:把数 ...

  10. java 12-2 String和StringBuffer之间的转换

    为什么我们要讲解类之间的转换: A -- B的转换 我们把A转换为B,其实是为了使用B的功能. B -- A的转换 我们可能要的结果是A类型,所以还得转回来. String和StringBuffer的 ...