牛腩新闻发布系统(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;
        }
    }
}

目录
相关文章
|
10月前
|
数据库
牛腩新闻发布系统
牛腩新闻发布系统
|
11月前
|
前端开发 C++ 容器
【牛腩】HTML+CSS基础了解
【牛腩】HTML+CSS基础了解
61 0
|
11月前
|
SQL 数据库 C#
【总结】《牛腩》完成篇
前言: 学习完牛腩,师傅指出了我学习存在的关键性问题:没有全局观,我也认识到这个问题的"致命性" 。在师傅的建议下,对前面几集视频进行重温,找到了开发一个系统时,最需要“磨刀”下功夫的地方。 整个系统开发时要先从整体把握,我概括为:系统整体把握,代码实现,整体命名规则。系统整体把握,让我们了解需求,对数据库,界面有宏观把握,保证大方向不会跑偏;代码实现部分分为前台显示和后台功能实现。前台显示看似是新接触的东西,其实与之前我们实现的《机房收费系统》比较,知识多了一些更自由的格式设置和一些相对比较陌生的语法知识,但界面显示真是变得更美观,更方便。后台编码部分和我们的三层结构就几乎完全
|
11月前
|
安全 网络安全 数据安全/隐私保护
【总结】《牛腩》颗粒归仓篇
在《牛腩》 发布过程中学习的不仅仅是发布,还有IIS的安装,防火墙的设置,端口的选择等,处处都是知识,处处都是学问。
|
设计模式 存储 数据库
【机房重构】——Sqlhelper
【机房重构】——Sqlhelper
88 0
|
C语言 C++
图书管理系统(跑路人笔记)C实现
图书管理系统(跑路人笔记)C实现
图书管理系统(跑路人笔记)C实现
|
Java 程序员
漫画:Object类很大,你忍一下(完结篇)
这一次,我们来重点讲解 wait(),notify(),notifyAll() 这三大方法。
151 0
|
C# 开发工具 git
牛腩代码生成器
源码地址: https://coding.net/u/niunan/p/niunan_gencode/git   生成好的下载地址: http://ohpxbzczu.bkt.clouddn.com/%E7%89%9B%E8%85%A9%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E5%99%A8WPF%E7%89%88%EF%BC%88v20170628%EF%BC%89.zip   界面预览:   源码里有WINFORM的,也有最新加的WPF的。
1163 0