zoukankan      html  css  js  c++  java
  • 迟来SQLHelper


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

     

        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[]參数的方法无法获取存储过程的返回值。





    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    ThinkPHP where方法:设置查询或操作条件
    微信小程序showToast延迟跳转页面
    uniapp微信小程序授权登录
    什么是二维码,什么是QR码?
    微信小程序授权登录开发流程图
    微信小程序提交审核并发布详细流程(一)
    微信小程序提交审核并发布详细流程2
    uniapp医院预约挂号微信小程序
    《爆款文案》写文案只需要四个步骤
    Spark学习笔记——读写ScyllaDB
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4726308.html
Copyright © 2011-2022 走看看