牛腩新闻发布系统(B/S)中的SQLHelper

1.关于SQLHelper的基础知识的说明,简单介绍一下:

SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver、oracle、access、Mysql数据库,也是一个开源项目,提供免费下载。

SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper
类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。

2.在这里主要说一下关于再次学习SQLHelper的感受:

在这次的B/S牛腩新闻发布系统的学习过程中,相对于C/S的学习中使用到的SQLHelper,略微有些不同,但很大部分还是和C/S的样子。其中关于SQLHelper的使用主要还是连接数据库的助手,执行SQL语句或存储过程。数据库助手的应用主要还是为了方便开发人员的开发和应用,减少代码量,以到达提高效率的作用。

/*
 * 创建人:吴士龙
 * 创建时间:2015-07-15 17:12
 * 说明:数据库助手类
 * 版权所有:个人
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DAL
{
    public class SQLHelper
    {
        private SqlConnection conn = null;
        private SqlCommand cmd = null;
        private SqlDataReader sdr = null;
        public SQLHelper()
        {
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
            conn = new SqlConnection(connStr);
        }

        private SqlConnection GetConn()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
        }

        /// <summary>
        ///  执行不带参数的增删改SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">增删改SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, CommandType ct)
        {
            int res;
            try
            {
                cmd = new SqlCommand(cmdText, GetConn());
                cmd.CommandType = ct;
                res = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return res;
        }

        /// <summary>
        ///  执行带参数的增删改SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">增删改SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            int res;
            using (cmd = new SqlCommand(cmdText, GetConn()))
            {
                cmd.CommandType = ct;
                cmd.Parameters.AddRange(paras);
                res = cmd.ExecuteNonQuery();
            }
            return res;
        }

        /// <summary>
        ///  执行查询SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">查询SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }

        /// <summary>
        ///  执行带参数的查询SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">查询SQL语句或存储过程</param>
        /// <param name="paras">参数集合</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            cmd.Parameters.AddRange(paras);
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
    }
}
时间: 2024-09-02 17:30:26

牛腩新闻发布系统(B/S)中的SQLHelper的相关文章

点滴的积累---牛腩新闻发布系统总结

         最近学习状态一直都不错,最近敲完牛腩新闻发布系统后又看了看<培养计划6.0>发现"牛腩新闻发布系统"的作用其实就是一个成语--抛砖引玉.在该新闻发布系统中基本上涉及到了B/S开发所需要具备的知识模块(HTML.Asp.net.XML.JavaScript.CSS.DIV.JQuery.AJAX).通过这个小的系统我的学习也将从C/S转移到B/S上,当然这个小的系统带给我的远远不止这些.            一.重新认识了软件开发的流程.        

遇见你是一个秘密--牛腩新闻发布系统尾声

         遇见你是一个秘密          历经十三天的冬季美丽时光,牛腩新闻发布系统在距离平安夜还有一个月的日子里从尘埃里结出圣诞果,咋一听,牛腩老师的声音有一种小罗的赶脚,仔细一听,有一种唐欢师姐的味道,伴随着牛腩老师正宗的广西普通话的视频教学,让牛腩老师的每一节课都充满一种独具匠心的人格魅力.这种魅力会让小编没有困意,没有反感,吸引着小编跟着牛腩老师将所有问题一一解决,一直坚定的走到新闻发布的最后.            第一次接触B/S方面的知识,小心脏扑通扑通的跳,感觉到她对

牛腩新闻发布系统--学习Web的小技巧汇总

        2014年11月10日,是个难忘的日子,这一天,小编的BS学习开始了,BS的开头,从牛腩新闻发布系统开始,之前学习的内容都是CS方面的知识,软考过后,开始学习BS,接触BS有几天的时间了,跟着牛腩老师敲着牛腩新闻发布系统,感觉棒棒哒,看了前面二十集,发现牛腩老师真的是把党的思想贯彻的淋漓尽致,跟着牛腩老师一起学习,发现了很多让我怦然心动的小知识,每次都让我的小宇宙爆发,现在就把这些小技巧分享给小编的小伙伴.该博文小编主要讲解三个方面的知识.第一:如何让代码整齐美观,第二:代码的注

牛腩新闻发布系统总结(一)——总体感受

           牛腩新闻发布系统的学习差不多用了一个月,我对它的总体评价是"麻雀虽小,五脏俱全",这是我第一次开始接触网页设计,当我把它设计完时,满满的都是成就感,虽然自己按着牛老师的意思做的,不过依旧非常开心.        牛老师的视频看完我首先想说,他是个特别有耐心,全心全意为人民服务的人,完全从初学者的角度出发,第一个让我想看他其他视频的人,这个系统虽然说很小,不过每一步设计都都很关键,很准确,让我这个没有接触过完整项目开发的人不至于跑偏.        首先是项目设计思

牛腩新闻发布系统总结(三)----点滴知识

           这篇博客呢主要是讲一下我在做系统的过程中积累下来的感觉很常用但之前没接触过或者有些难理解的地方,与大家分享:       首先,说一下CSS+Div,这个内容在CSS+DIV这篇博客中有陈述,下面做一个补充:               第二,Eval和Bind绑定问题          在牛腩新闻发布系统中,我们分别是这样用的:        //绑定新闻分类 DataTable dt = new categoryBLL().SelectAll(); ddlMCatego

牛腩新闻发布系统总结(四)--知识点滴

            紧接上篇博客:牛腩新闻发布系统总结(三)----知识点滴,继续我们的总结:          第五,在回复评论后如何保持滚动条的位置不变:           <%@ Page Title="新闻内容-牛腩新闻发布系统" Language="C#" MasterPageFile="~/common.Master" AutoEventWireup="true" CodeBehind="ne

【视频】 牛腩新闻发布系统

做了一个新闻发布系统,打算录制成视频,共享出来给大家看看评评,鸡蛋砖头请自备,欢迎来砸!     整个新闻发布系统的功能很简单,数据库增删查改而已,再配合一些杂七杂八的花哨...     具体的视频里再说,下面先早泄出一些界面图,以供大家欣赏!    整个视频录制打算分四部分来录制: 软件安装及数据库设计.文档编写 .NET三层后台代码编写 DIV+CSS前台界面设计(兼容IE6,7,8,firefox,opera,chrome) 后台代码与前台界面的整合及其他杂七杂八的花哨(ajax,jQue

牛腩新闻发布系统添加RequiredFieldValidator验证控件出现未经处理的异常

  原本以为只有我会遇到这样的问题呢,后来和同学一交流,才知道大家都有这个问题,主要原因就是根目录下缺少文件.添加进去就可以了!   问题截图:      解决办法:   在下面路径下找到该文件,这个根据版本不同,可能路径稍微有些差异:     复制到程序根目录下的bin文件夹     不怕不知道就怕不知道,原本以为是自己看视频不认真,代码可能有遗漏,于是各种检查代码.其实很简单百度一下就解决了!你以为你以为的就是你以为的吗?

新闻发布系统,B/S模式下的三层应用

三层的学习已接触四五个月了,最早是在学习VB.NET视频中开始接触的,那时候跟着视频敲了两个例子.再后来,个人机房重构的时候,从三层进步到了七层,此后就觉得我们不能仅仅局限于三层之上. 不过,那些都是C/S模式之下的编程.到现在,接触了B/S模式也一个多月了,第一个牛腩新闻发布系统觉得很是有趣,还是从最基本的开始,下面就一起看看B/S模式下,三层是怎样应用的.这篇博客就以添加新闻的实例来总结. 对于三层的整个过程大家都是很熟悉的了,那么在这里就不再赘述了,直接一层一层来分析. 一.思路整理. U