加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB.net之旅-SQLHelper的应用程序配置文件和使用(机房收费系统重

发布时间:2020-12-17 07:54:32 所属栏目:百科 来源:网络整理
导读:“就不能不换 DB 吗?——抽象工厂模式”,没错,这是大话设计中的一章,在这一章中,大鸟教会了小菜,用配置文件改变‘ DB ’的值,从而改变了应用程序要访问的数据库类型。详情请见大话设计模式 P157 我们在 SQLHelper 中也用到了配置文件来改变 SQLHelper

“就不能不换DB吗?——抽象工厂模式”,没错,这是大话设计中的一章,在这一章中,大鸟教会了小菜,用配置文件改变‘DB’的值,从而改变了应用程序要访问的数据库类型。详情请见大话设计模式P157

  1. 我们在SQLHelper中也用到了配置文件来改变SQLHelper中数据库连接的字符串

因为我们使用的是应用程序配置文件,所以我们将配置文件添加在UI层,右击UI->新建项->常规->应用程序配置文件,在app.config中对connstr进行赋值。

  1. SQLHelper将我们日常生活中常用的四个存储过程(insertdeletemodify select)进行了封装
    1. 无参,返回值为所影响行数的增删改方法
    2. 有参,返回值为所影响行数的增删改方法
    1. 无参,返回值为SqlDataReader的查方法
    1. 有参,返回值为SqlDataReader的查方法
      <span style="font-family:Tahoma;font-size:18px;">Imports System
      Imports System.Data
      '需要在解决方案管理器中对SQLHelper所在的项目中添加对System.Configuration的引用
      Imports System.Configuration
      Imports System.Data.SqlClient
      
      Public Class SQLHelper
          Dim conn As SqlConnection
          Dim cmd As SqlCommand
          Dim connstr As String = ConfigurationManager.AppSettings("connstr").ToString
      
          Public SQLHelper()
      
      #Region "建立数据库连接对象"
          ''' <summary>
          ''' 建立数据库的连接
          ''' </summary>
          ''' <returns>返回一个数据库的连接SqlConnection对象</returns>
          ''' <remarks></remarks>
          Public Function getSqlConnection() As SqlConnection
              Try
                  conn = New SqlConnection(connstr) '利用配置文件,连接到connstr所指定的数据库
                  If (conn.State.Equals(ConnectionState.Open)) = False Then
                      conn.Open()
      
                  End If
              Catch ex As Exception
                  Throw New Exception(ex.Message.ToString())
              End Try
              Return conn
          End Function
      #End Region
      
      #Region "设置SqlCommand对象"
          ''' <summary>
          ''' 设置SqlCommand对象
          ''' </summary>
          ''' <param name="cmd">SqlCommand对象</param>
          ''' <param name="cmdText">命令文本</param>
          ''' <param name="cmdType">命令类型</param>
          ''' <param name="cmdParms">参数集合</param>
          ''' <remarks></remarks>
          Public Sub SetCommand(ByVal cmd As SqlCommand,ByVal cmdText As String,ByVal cmdType As CommandType,ByVal cmdParms As SqlParameter())
              cmd.Connection = conn
              cmd.CommandText = cmdText
              cmd.CommandType = cmdType
      
              If (cmdParms Is Nothing) = False Then
                  cmd.Parameters.AddRange(cmdParms)
              End If
          End Sub
      
      #End Region
      
      #Region "无参,返回所影响的行数的增删改方法"
          ''' <summary>
          ''' 执行不带参数sql语句或存储过程,返回所影响的行数
          ''' </summary>
          ''' <param name="cmdText">增,删,改sql语句</param>
          ''' <returns>返回所影响的行数</returns>
          ''' <remarks></remarks>
          Public Function ExecuteNonQuery(ByVal cmdText As String) As Int16
              Dim count As Int16
              Try
                  getSqlConnection()
                  cmd = New SqlCommand(cmdText,conn)
                  count = cmd.ExecuteNonQuery()
                  conn.Close()
      
              Catch ex As Exception
                  Throw New Exception(ex.Message.ToString())
              End Try
              Return count
      
      
          End Function
      #End Region
      
      #Region "有参,返回所影响的行数的增删改方法"
      
          ''' <summary>
          ''' 执行带参数sql语句或存储过程,返回所影响的行数
          ''' </summary>
          ''' <param name="cmdText">带参数的sql语句和存储过程名</param>
          ''' <param name="cmdType">命令类型</param>
          ''' <param name="cmdparms">参数集合</param>
          ''' <returns>返回所影响的行数</returns>
          ''' <remarks></remarks>
          Public Function ExecuteNonQuery(ByVal cmdText As String,ByVal cmdparms As SqlParameter())
              Dim count As Int16
              Try
                  getSqlConnection()
                  Dim cmd As New SqlCommand
                  SetCommand(cmd,cmdText,cmdType,cmdparms)
                  count = cmd.ExecuteNonQuery()
                  cmd.Parameters.Clear()
                  conn.Close()
      
              Catch ex As Exception
                  Throw New Exception(ex.Message.ToString)
      
              End Try
              Return count
      
          End Function
      #End Region
      
      #Region "无参,具有返回值的查询方法"
          ''' <summary>
          ''' 执行不带参数sql语句,返回一个从数据源读取数据的SqlDataReader对象
          ''' </summary>
          ''' <param name="cmdText">相应的sql语句</param>
          ''' <returns>一个从数据源读取数据的SqlDataReader对象</returns>
          ''' <remarks></remarks>
          Public Function ExecuteReader(ByVal cmdText As String) As SqlDataReader
              Dim reader As SqlDataReader
              Try
                  getSqlConnection()
                  cmd = New SqlCommand(cmdText,conn)
                  reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
              Catch ex As Exception
                  Throw New Exception(ex.Message.ToString)
              End Try
              Return reader
      
          End Function
      #End Region
      
      #Region "无参,具有返回值的查询方法"
      
          ''' <summary>
          ''' 执行带参数的sql语句或存储过程,返回一个从数据源读取数据的SqlDataReader对象
          ''' </summary>
          ''' <param name="cmdText">sql语句或存储过程名</param>
          ''' <param name="cmdType">命令类型</param>
          ''' <param name="cmdParms">参数集合</param>
          ''' <returns>返回一个从数据源读取数据的SqlDataReader对象</returns>
          ''' <remarks></remarks>
          Public Function ExecuteReader(ByVal cmdText As String,ByVal cmdParms As SqlParameter()) As SqlDataReader
              Dim reader As SqlDataReader
              Try
                  getSqlConnection()
                  cmd = New SqlCommand()
                  SetCommand(cmd,cmdParms)
                  reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
              Catch ex As Exception
                  Throw New Exception(ex.Message.ToString())
      
              End Try
              Return reader
          End Function
      #End Region
      
      End Class</span>

光有代码,不会使用也发挥不了SQLHelper的强大之处

有参,返回值为所影响行数的增删改使用

有参,返回值为SqlDataReader的查方法的使用

从开始知道有个SQLHelper到真正实现,花了我一周的时间,可真是耗时耗力,不过我也体会到了SQLHelper的好处,SqlHelper简化了我们需要重复写的数据库连接,如SqlConnection,SqlCommand,SqlDataReader等等;还有,SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读