姗姗来迟的SQLHelper

机房收费系统个人重构版敲完登陆系统之后往后敲了几个窗体,对于那些数据库连接SqlConnenction、SqlConnamd等经常敲重复的代码,之前也看过其他人的博客,这个东西不用还真不行。

SqlHelper是什么?

SqlHelper是一个基于·NETFramework的数据库操作组件。组件中包含数据库操作方法。

SqlHelper的作用?

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

机房个人重构Sqlhelper代码:

’****************************************************
’文件名:SqlHelper
’命名空间:DAL
'内容:使用SqlHelper,提供较高的数据访问性
’功能:
’文件关系:
’作者:赵亚盟
’小组:XXX
’生成日期:2014-07-17 14:44:38
’版本号:V1.0.0.0
’修改日志:
’版本说明:
'****************************************************
Imports System.Data
Imports System.Data.SqlClient  'SQLServer的连接对象
Imports System.Configuration  '配置文件的引用 (管理器中也要引用)
'------------------------------------------------------------------------------------------------------------------------------------------------------------------
Public Class SqlHelper

    Dim Connstr As String = ConfigurationManager.AppSettings("Connstr") '配置文件
    Dim conn As New SqlConnection  '定义连接
    Dim cmd As New SqlCommand      '定义命令
    Public Sub New()
        conn = New SqlConnection(Connstr)
    End Sub
#Region "有参数的查询操作"

    ''' <summary>
    '''执行查询操作,有参数返回datatable类型
    ''' </summary>
    ''' <param name="cmdText">需要执行语句,可以是Sql语句也可以是存储过程</param>
    ''' <param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param>
    ''' <param name="paras">参数数组</param>
    ''' <returns>返回表</returns>
    ''' <remarks></remarks>
    Public Function GetDataTable(cmdText As String, cmdType As String, paras As SqlParameter()) As DataTable

        Dim adapter As New SqlDataAdapter
        Dim ds As New DataSet              '定义一个适配器对象
        Dim dt As New DataTable

        cmd.CommandText = cmdText          '设置查询语句
        cmd.CommandType = cmdType
        cmd.Connection = conn              '设置连接,全局变量
        cmd.Parameters.AddRange(paras)     '传入参数
        adapter = New SqlDataAdapter(cmd)  '实例化Adapter

        Try
            adapter.Fill(ds)               '用Adapter将Dataset填充
            dt = ds.Tables(0)              'datatable为DataSet的第一个表
            cmd.Parameters.Clear()         '清除参数
        Catch ex As Exception
            MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
        Finally
            Call CloseConn(conn)
            Call CloseCmd(cmd)             '销毁cmd
        End Try
        Return dt                          '返回受影响的行数

    End Function

#End Region

    '------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#Region "无参数的查询操作"
    ''' <summary>
    '''执行查询操作,无参数返回datatable类型
    ''' </summary>
    ''' <param name="cmdText">需要执行语句,可以是Sql语句也可以是存储过程</param>
    ''' <param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param>
    ''' <returns>返回表</returns>
    ''' <remarks></remarks>
    Public Function GetDataTable(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable

        Dim adapter As New SqlDataAdapter
        Dim ds As New DataSet             '定义一个适配器对象
        Dim dt As New DataTable

        cmd.CommandText = cmdText         '将sql语句传给cmdsql
        cmd.CommandType = cmdType         '确定语句类型
        cmd.Connection = conn             '设置连接,全局变量
        adapter = New SqlDataAdapter(cmd) '实例化Adapter

        Try
            adapter.Fill(ds)              '用Adapter将Dataset填充
            dt = ds.Tables(0)             'datatable为DataSet的第一个表
        Catch ex As Exception
            MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
        Finally
            '销毁cmd
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try
        Return dt                         '返回受影响的行数

    End Function

#End Region
    '----------------------------------------------------------------------------------------------------------------------------------------------------------------------
#Region "有参数的增删改"
    ''' <summary>
    ''' ///执行有参数的增删改操作,有参数则返回Boolean类型,确认是否执行成功
    ''' </summary>
    ''' <param name="cmdText">需要执行语句,可以是Sql语句也可以是存储过程</param>
    ''' <param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param>
    ''' <param name="paras">参数数组</param>
    ''' <returns>返回Boolean类型,成功返回true,否则返回false</returns>
    ''' <remarks></remarks>
    Public Function ExecuteNoQuery(cmdText As String, cmdType As CommandType, paras As SqlParameter()) As Boolean

        cmd.Parameters.AddRange(paras)   '传入参数
        cmd.CommandType = cmdType        '确定语句类型
        cmd.CommandText = cmdText        '设置查询语句
        cmd.Connection = conn            '设置连接,全局变量

        Try
            conn.Open() '打开连接
            Return cmd.ExecuteNonQuery() '执行增删改操作
            cmd.Parameters.Clear()       '清除参数
        Catch ex As Exception
            Return False                 '如果出现错误,则返回false
        Finally
            '关闭数据库
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try

    End Function

#End Region
    '------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#Region "无参数的增删改"
    ''' <summary>
    ''' ///执行增删改操作,无参返回Boolean型,确认是否执行成功
    ''' </summary>
    ''' <param name="cmdText">需要执行语句,可以是Sql语句也可以是存储过程</param>
    ''' <param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param>
    ''' <returns>返回Boolean类型,成功返回true,否则返回false</returns>
    ''' <remarks></remarks>
    Public Function ExecuteNoQuery(cmdText As String, cmdType As CommandType) As Boolean

        cmd.CommandType = cmdType             '判断类型
        cmd.CommandText = cmdText             '设置查询语句
        cmd.Connection = conn                 '设置连接

        Try
            conn.Open()                       '打开连接
            Return cmd.ExecuteNonQuery()      '执行增删改操作
        Catch ex As Exception
            Return False                      '如果出现错误,则返回false
        Finally
            '关闭数据库
            Call CloseConn(conn)
            Call CloseCmd(cmd)
        End Try

    End Function

#End Region

    Public Sub CloseCmd(ByVal cmd As SqlCommand)
        '判断cmd命令是否存在,如果cmd命令不存在就销毁
        If Not IsNothing(cmd) Then
            cmd.Dispose()
            cmd = Nothing
        End If
    End Sub

    Public Sub CloseConn(ByVal conn As SqlConnection)
        '判断数据库连接对象状态是否是断开状态,,如果不是就断开
        If conn.State <> ConnectionState.Closed Then
            conn.Close()                               '关闭连接
        End If
    End Sub
End Class

在 SqlHelper 类中实现的方法包括:

ExecuteNonQuery。用于执行(有参数或无参数的)不返回任何行或值的命令。这些命令通常用于执行数据库(增\删\改)更新,但也可用于返回存储过程的输出参数。

ExecuteReader。此方法用于返回 SqlDataReader 对象,该对象包含由某一命令返回的结果集。

ExecuteDataset。此方法返回DataSet 对象,该对象包含由某一命令返回的结果集。

注意:在使用SqlHelper方法调用数据库存储过程时,需要获取存储过程的返回值,使用带有SSqlParameter[]参数的方法,Object[]参数的方法无法获取存储过程的返回值。

姗姗来迟的SQLHelper

时间: 2024-10-10 05:56:11

姗姗来迟的SQLHelper的相关文章

【2016-11-2】【坚持学习】【Day17】【微软 推出的SQLHelper】

从网络上找到 微软原版本的SQLHelper,很多行代码.认真看了,学习了. 代码: 1 using System; 2 using System.Data; 3 using System.Xml; 4 using System.Data.SqlClient; 5 using System.Collections; 6 7 namespace Helper 8 { 9 /// <summary> 10 /// The SqlHelper class is intended to encapsu

对SqlHelper的理解

简介 Sqlhelper 是用来避免重复输入连接数据库代码的类,封装后只需要给类中的方法传入一些参数如数据库连接字符串,SQL参数等就可以访问数据库了.因为我们要声明该类不能被继承或实例化,所以我们要通过静态方法来封装数据访问功能.静态方法为类所有,可以通过对象来使用,也可以通过类来使用.但一般提倡通过类名来使用,应为静态方法只要定义了类,不必建立类的实例就可使用. 机制 上面说了SqlHelper的简介,接下来介绍它具体的运行机制.首先和普通连接数据库的步骤一样,要先定义Connection对

机房收费系统中sqlhelper的应用

在接受了三层的思想之后,sqlhelper被传的沸沸扬扬,它给我们的编码带来多少优势.让编码者少花了多少时间.多少精力,等等的赞美之词不绝于耳.自己也是将信将疑的,毕竟自己没有亲身经历,所以没有很大的体会.而如今,自己多次使用了sqlhelper,穿梭在各层之间确实也体会到了它带给我们的简便之处,结合很多人的版本自己编写了属于自己的那一版,以下便是具体代码: <span style="font-family:KaiTi_GB2312;font-size:18px;">Imp

公共的数据库访问访问类 SqlHelper.cs

/// <summary> /// 类说明:公共的数据库访问访问类 /// </summary> using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Collections; namespace DotNet.Utilities { /// <summary> /// 

DapperHelper,SqlHelper

using System;using System.Collections.Generic;using System.Data.Common;using System.Linq;using System.Text;using System.Threading.Tasks;using Dapper;using System.Configuration;using System.Data.SqlClient;using System.Data; namespace OADemo.Tool{ publ

SqlHelper中IN集合场景下的参数处理

我手头有个古老的项目,持久层用的是古老的ADO.net.前两天去昆明旅游,其中的一个景点是云南民族村,通过导游介绍知道了一个古老的民族——基诺族,这是我国的第56个民族.  项目里的ado.net和基诺族一样古老. 话说,项目里数据访问层,好多都是拼的sql,这给sql注入提供了可乘之机,为了系统安全,决定在有限的时间内,将它改成参数化. 其中,有个根据多个订单号查询支付单的方法,签名如下: public DataTable GetAlipayNotifyRecords(AlipayPaymen

C#实现较为实用的SQLhelper

第一次写博客,想不到写什么好b( ̄▽ ̄)d ,考虑的半天决定从sqlhelper开始,sqlhelper对程序员来说就像helloworld一样,很简单却又很重要,helloworld代表着程序员萌新第一次写代码,而sqlhelper则是初次接触数据库(不知道这种说法对不对). 好了不废话了,下面直接上代码(无话可说了): 1 public class SQLHelper 2 { 3 // 超时时间 4 private static int Timeout = 1000; 5 // 数据库名称

微软原版SQLHelper类

C# Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

微软SQLHelper.cs类 中文版

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Xml; using System.Collections; namespace LiuYanBanT { public class SqlHelper