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

前端之家收集整理的这篇文章主要介绍了VB.net之旅-SQLHelper的应用程序配置文件和使用(机房收费系统重构个人版)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

  1. sqlHelper将我们日常生活中常用的四个存储过程(insertdeletemodify select)进行了封装
    1. 无参,返回值为所影响行数的增删改方法
    2. 有参,返回值为所影响行数的增删改方法
    1. 无参,返回值为sqlDataReader的查方法
    1. 有参,返回值为sqlDataReader的查方法
      1. <span style="font-family:Tahoma;font-size:18px;">Imports System
      2. Imports System.Data
      3. '需要在解决方案管理器中对sqlHelper所在的项目中添加对System.Configuration的引用
      4. Imports System.Configuration
      5. Imports System.Data.sqlClient
      6.  
      7. Public Class sqlHelper
      8. Dim conn As sqlConnection
      9. Dim cmd As sqlCommand
      10. Dim connstr As String = ConfigurationManager.AppSettings("connstr").ToString
      11.  
      12. Public sqlHelper()
      13.  
      14. #Region "建立数据库连接对象"
      15. ''' <summary>
      16. ''' 建立数据库的连接
      17. ''' </summary>
      18. ''' <returns>返回一个数据库的连接sqlConnection对象</returns>
      19. ''' <remarks></remarks>
      20. Public Function getsqlConnection() As sqlConnection
      21. Try
      22. conn = New sqlConnection(connstr) '利用配置文件,连接到connstr所指定的数据库
      23. If (conn.State.Equals(ConnectionState.Open)) = False Then
      24. conn.Open()
      25.  
      26. End If
      27. Catch ex As Exception
      28. Throw New Exception(ex.Message.ToString())
      29. End Try
      30. Return conn
      31. End Function
      32. #End Region
      33.  
      34. #Region "设置sqlCommand对象"
      35. ''' <summary>
      36. ''' 设置sqlCommand对象
      37. ''' </summary>
      38. ''' <param name="cmd">sqlCommand对象</param>
      39. ''' <param name="cmdText">命令文本</param>
      40. ''' <param name="cmdType">命令类型</param>
      41. ''' <param name="cmdParms">参数集合</param>
      42. ''' <remarks></remarks>
      43. Public Sub SetCommand(ByVal cmd As sqlCommand,ByVal cmdText As String,ByVal cmdType As CommandType,ByVal cmdParms As sqlParameter())
      44. cmd.Connection = conn
      45. cmd.CommandText = cmdText
      46. cmd.CommandType = cmdType
      47.  
      48. If (cmdParms Is Nothing) = False Then
      49. cmd.Parameters.AddRange(cmdParms)
      50. End If
      51. End Sub
      52.  
      53. #End Region
      54.  
      55. #Region "无参,返回所影响的行数的增删改方法"
      56. ''' <summary>
      57. ''' 执行不带参数sql语句或存储过程,返回所影响的行数
      58. ''' </summary>
      59. ''' <param name="cmdText">增,删,改sql语句</param>
      60. ''' <returns>返回所影响的行数</returns>
      61. ''' <remarks></remarks>
      62. Public Function ExecuteNonQuery(ByVal cmdText As String) As Int16
      63. Dim count As Int16
      64. Try
      65. getsqlConnection()
      66. cmd = New sqlCommand(cmdText,conn)
      67. count = cmd.ExecuteNonQuery()
      68. conn.Close()
      69.  
      70. Catch ex As Exception
      71. Throw New Exception(ex.Message.ToString())
      72. End Try
      73. Return count
      74.  
      75.  
      76. End Function
      77. #End Region
      78.  
      79. #Region "有参,返回所影响的行数的增删改方法"
      80.  
      81. ''' <summary>
      82. ''' 执行带参数sql语句或存储过程,返回所影响的行数
      83. ''' </summary>
      84. ''' <param name="cmdText">带参数的sql语句和存储过程名</param>
      85. ''' <param name="cmdType">命令类型</param>
      86. ''' <param name="cmdparms">参数集合</param>
      87. ''' <returns>返回所影响的行数</returns>
      88. ''' <remarks></remarks>
      89. Public Function ExecuteNonQuery(ByVal cmdText As String,ByVal cmdparms As sqlParameter())
      90. Dim count As Int16
      91. Try
      92. getsqlConnection()
      93. Dim cmd As New sqlCommand
      94. SetCommand(cmd,cmdText,cmdType,cmdparms)
      95. count = cmd.ExecuteNonQuery()
      96. cmd.Parameters.Clear()
      97. conn.Close()
      98.  
      99. Catch ex As Exception
      100. Throw New Exception(ex.Message.ToString)
      101.  
      102. End Try
      103. Return count
      104.  
      105. End Function
      106. #End Region
      107.  
      108. #Region "无参,具有返回值的查询方法"
      109. ''' <summary>
      110. ''' 执行不带参数sql语句,返回一个从数据源读取数据的sqlDataReader对象
      111. ''' </summary>
      112. ''' <param name="cmdText">相应的sql语句</param>
      113. ''' <returns>一个从数据源读取数据的sqlDataReader对象</returns>
      114. ''' <remarks></remarks>
      115. Public Function ExecuteReader(ByVal cmdText As String) As sqlDataReader
      116. Dim reader As sqlDataReader
      117. Try
      118. getsqlConnection()
      119. cmd = New sqlCommand(cmdText,conn)
      120. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
      121. Catch ex As Exception
      122. Throw New Exception(ex.Message.ToString)
      123. End Try
      124. Return reader
      125.  
      126. End Function
      127. #End Region
      128.  
      129. #Region "无参,具有返回值的查询方法"
      130.  
      131. ''' <summary>
      132. ''' 执行带参数的sql语句或存储过程,返回一个从数据源读取数据的sqlDataReader对象
      133. ''' </summary>
      134. ''' <param name="cmdText">sql语句或存储过程名</param>
      135. ''' <param name="cmdType">命令类型</param>
      136. ''' <param name="cmdParms">参数集合</param>
      137. ''' <returns>返回一个从数据源读取数据的sqlDataReader对象</returns>
      138. ''' <remarks></remarks>
      139. Public Function ExecuteReader(ByVal cmdText As String,ByVal cmdParms As sqlParameter()) As sqlDataReader
      140. Dim reader As sqlDataReader
      141. Try
      142. getsqlConnection()
      143. cmd = New sqlCommand()
      144. SetCommand(cmd,cmdParms)
      145. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
      146. Catch ex As Exception
      147. Throw New Exception(ex.Message.ToString())
      148.  
      149. End Try
      150. Return reader
      151. End Function
      152. #End Region
      153.  
      154. End Class</span>

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

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

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

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

猜你在找的VB相关文章