首页 > 代码库 > 机房收费重构(四)-SqlHelper
机房收费重构(四)-SqlHelper
最近由于学校专业课考试,导致上一篇的一些博客没有及时补上,让读者久等了,下面来说说关于DAL中一个模板吧-SqlHelper。
在敲机房收费中,有好多都是重复的访问数据库这些操作,这样我们可以将这些步骤抽象出来,命名为SqlHelper。在任何时候想到抽象和封装。面向对象的思想深入骨髓。
在SQLHelper中主要有四类,分别是:
不带参数的sql增删改语句或存储过程(无返回行或值)
带参数的sql增删改语句或存储过程(无返回行或值)
不带参数的sql查询语句或存储过程,返回DataTable结果集(有返回行或值)
带参数的sql查询语句或存储过程,返回DataTable结果集(有返回行或值)
好了废话少说,直接上代码模板了。
1. 首先要通过配置文件获得字符串
<span style="font-size:14px">Imports System.Data.SqlClient Imports System.Configuration '添加对配置文件的引用 Public Class SqlHelper '通过配置文件获取连接字符串并赋值给所声明的变量strConnection Dim strConnection As String = ConfigurationManager.AppSettings("strSqlConnection") Dim conn As SqlConnection = New SqlConnection(strConnection) '设置连接 Dim cmd As New SqlCommand '声明SqlCommand类变量cmd</span>2.提取重复的代码:
<span style="font-size:14px"> ''' <summary> ''' 关闭连接 ''' </summary> ''' <param name="conn">需要关闭的连接</param> ''' <remarks></remarks> Private Sub CloseConn(ByVal conn As SqlConnection) '如果没有关闭,则关闭连接 If (conn.State <> ConnectionState.Closed) Then conn.Close() conn = Nothing End If End Sub ''' <summary> ''' 关闭命令 ''' </summary> ''' <param name="cmd">需要关闭的命令</param> ''' <remarks></remarks> Private Sub CloseCmd(ByVal cmd As SqlCommand) '如果没有关闭,则关闭命令 If Not IsNothing(cmd) Then cmd.Dispose() cmd = Nothing End If End Sub</span>3.具体操作。分别是有参增删改、无参增删改、有参查询、无参查询。
<span style="font-size:14px"> ''' <summary> ''' 关闭命令 ''' </summary> ''' <param name="cmd">需要关闭的命令</param> ''' <remarks></remarks> Private Sub CloseCmd(ByVal cmd As SqlCommand) '如果没有关闭,则关闭命令 If Not IsNothing(cmd) Then cmd.Dispose() cmd = Nothing End If End Sub ''' <summary> ''' 有参数的 增删改 操作 ''' </summary> ''' <param name="cmdText">需要执行的命令</param> ''' <param name="cmdType">所执行命令的类型,一般是Sql语句,也有可能是存储过程,或表</param> ''' <param name="sqlParams">参数数组</param> ''' <returns>返回执行 增删改 语句受影响的行数,为Integer类型</returns> Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Integer '将传入的值,分别为cmd的属性赋值 cmd.Parameters.AddRange(sqlParams) '将参数传入 cmd.CommandType = cmdType '设置一个值,解释cmdText cmd.Connection = conn '设置连接 cmd.CommandText = cmdText '设置查询的语句 '执行操作 Try conn.Open() '打开连接 Return cmd.ExecuteNonQuery() '执行增删改操作并返回受影响的行数 cmd.Parameters.Clear() '清除参数 Catch ex As Exception Return 0 '如果出错,返回0 Finally Call CloseConn(conn) '关闭连接 Call CloseCmd(cmd) '关闭连接 End Try End Function ''' <summary> ''' 无参数的 增删改 操作 ''' </summary> ''' <param name="cmdText">需要执行的命令</param> ''' <param name="cmdType">所执行命令的类型,一般是Sql语句,也有可能是存储过程,或表</param> ''' <returns>返回执行 增删改 语句受影响的行数,为Integer类型</returns> Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer '将传入的参数,分别为cmd的属性赋值 cmd.CommandType = cmdType '设置一个值,解释cmdText cmd.Connection = conn '设置连接 cmd.CommandText = cmdText '设置查询的语句 '执行操作 Try conn.Open() '打开连接 Return cmd.ExecuteNonQuery() '执行增删改操作并返回受影响的行数 cmd.Parameters.Clear() '清除参数 Catch ex As Exception Return 0 '如果出错,返回0 Finally Call CloseConn(conn) '关闭连接 Call CloseCmd(cmd) '关闭连接 End Try End Function ''' <summary> ''' 有参数的 查询 操作 ''' </summary> ''' <param name="cmdText">需要执行的命令</param> ''' <param name="cmdType">所执行命令的类型,一般是Sql语句,也有可能是存储过程,或表</param> ''' <param name="sqlParams">参数数组</param> ''' <returns>返回执行 查询 得到的结果,为DataTable类型</returns> Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable Dim sqlAdapter As SqlDataAdapter '声明适配器 Dim dt As New DataTable '声明数据表 Dim ds As New DataSet '声明数据缓存 '将传入的值,分别为cmd的属性赋值 cmd.Parameters.AddRange(sqlParams) '将参数传入 cmd.CommandType = cmdType '设置一个值,解释cmdText cmd.Connection = conn '设置连接 cmd.CommandText = cmdText '设置查询的语句 sqlAdapter = New SqlDataAdapter(cmd) '实例化适配器 '执行操作 Try sqlAdapter.Fill(ds) '用适配器对ds进行填充 dt = ds.Tables(0) '返回数据集的第一个表 cmd.Parameters.Clear() '清除参数 Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告") Finally Call CloseConn(conn) '关闭连接 Call CloseCmd(cmd) '关闭连接 End Try Return dt End Function ''' <summary> ''' 无参数的 查询 操作,返回值为DataTable类型 ''' </summary> ''' <param name="cmdText">需要执行的命令</param> ''' <param name="cmdType">所执行命令的类型,一般是Sql语句,也有可能是存储过程,或表</param> ''' <returns>返回执行 查询 得到的结果,为DataTable类型</returns> Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable Dim sqlAdapter As SqlDataAdapter '声明适配器 Dim dt As New DataTable '声明数据表 Dim ds As New DataSet '声明数据缓存 '将传入的值,分别为cmd的属性赋值 cmd.CommandType = cmdType '设置一个值,解释cmdText cmd.Connection = conn '设置连接 cmd.CommandText = cmdText '设置查询的语句 sqlAdapter = New SqlDataAdapter(cmd) '实例化适配器 '执行操作 Try sqlAdapter.Fill(ds) '用适配器对ds进行填充 dt = ds.Tables(0) '返回数据集的第一个表 Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告") Finally Call CloseConn(conn) '关闭连接 Call CloseCmd(cmd) '关闭连接 End Try Return dt End Function End Class</span>在今后的机房收费,我想都会用到这个步骤,大家不会每次访问数据库的总是重复的写那么查询数据库的代码吧,从SqlHelper中我们可以学到面向对象的思想,以后在今后的编程中要注意会使用模板。这样精简代码,提高代码利用率。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。