机房收费系统个人重构3——sqlHelper
2014-08-31 21:16
316 查看
SqlHelper是一个基于·NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。——百度百科如此说
其实说了一大堆,我认为sqlHelper就是封装了一个方法,就是操作数据库的方法,方法的重载支持不同的参数和数据访问方式。对数据库的操作我们分为2类:查询和非查询(insert、delete、update)。看代码:(本文中的数据库是SqlServer,所以使用SqlServerHelper类)
在用SQLHelper之前,我们要先用配置文件配置连接字符串,这样就能够在SQLHelper中方便的使用连接字符串,无论数据库怎么换,对源代码都没有影响:
<appSettings >
<add key="ConnStr" value="Data Source=(local);DataBase=BaseCharge;user id=sa;password=123456" />
</appSettings>
我的sqlHelper中一共分了两大类:查询、非查询。其中每一类中又包括带参数、不带参数。但是我在实践中发现,带不带参都无所谓,其实我们完全可以都用带参的操作,即使参数中没有任何东西。下面看看在D层是如何调用的:
其实本来应该是不用带参数的,只是这里我为了展现的全面一些,我写上parameters了,虽然在这个过程中它没有实际作用。刚开始我也是照着别人的博客来学用sqlHelper,理解不深,但是后来越用越能发现它的方便,大大提高了代码的复用。希望对大家有帮助,也帮助我改进!
其实说了一大堆,我认为sqlHelper就是封装了一个方法,就是操作数据库的方法,方法的重载支持不同的参数和数据访问方式。对数据库的操作我们分为2类:查询和非查询(insert、delete、update)。看代码:(本文中的数据库是SqlServer,所以使用SqlServerHelper类)
在用SQLHelper之前,我们要先用配置文件配置连接字符串,这样就能够在SQLHelper中方便的使用连接字符串,无论数据库怎么换,对源代码都没有影响:
<appSettings >
<add key="ConnStr" value="Data Source=(local);DataBase=BaseCharge;user id=sa;password=123456" />
</appSettings>
<span style="font-size:18px;">'/********************************************************************* '类 名 称:SqlHelper '命名空间:DAL '创建时间:2014/8/10 星期日 19:49:04 '作 者:moumou '小 组: '修改时间: '修 改 人: '版 本 号:v1.0.0 '*********************************************************************/ Imports System.Configuration Imports System.Data.SqlClient Public Class SqlHelper Dim ConnStr As String = System.Configuration.ConfigurationSettings.AppSettings("ConnStr") '从配置文件获得字符串并赋值 Dim sqlconn As SqlConnection = New SqlConnection(ConnStr) '设置链接 Dim sqlcmd As New SqlCommand ''' <summary> ''' 关闭命令 ''' </summary> ''' <param name="sqlcmd">释放资源</param> ''' <remarks></remarks> Private Sub closeCmd(ByVal sqlcmd As SqlCommand) If Not IsNothing(sqlcmd) Then sqlcmd.Dispose() '释放所有资源 sqlcmd = Nothing End If End Sub ''' <summary> ''' 关闭链接 ''' </summary> ''' <param name="sqlconn"></param> ''' <remarks></remarks> Private Sub closeConn(ByVal sqlconn As SqlConnection) If (sqlconn.State <> ConnectionState.Closed) Then sqlconn.Close() sqlconn = Nothing End If End Sub ''' <summary> ''' 有参数的执行(增删改)操作 ''' </summary> ''' <param name="cmdText">需要执行的命令</param> ''' <param name="cmdType">所执行的命令的类型,一般为sql语句,也可能为存储过程或表</param> ''' <param name="sqlParams">参数组</param> ''' <returns>返回执行的结果,为受影响的行数</returns> ''' <remarks></remarks> Public Function ExecuteAddDeleteUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Boolean sqlcmd.CommandText = cmdText '执行的语句 sqlcmd.Parameters.AddRange(sqlParams) '传入参数 sqlcmd.CommandType = cmdType '执行语句的类型 sqlcmd.Connection = sqlconn Dim flag As Boolean '设置链接 Try sqlconn.Open() '打开数据库 flag = sqlcmd.ExecuteNonQuery() Return flag '执行 sqlcmd.Parameters.Clear() '清空参数 Catch ex As Exception flag = False '如果出错返回f Finally Call closeCmd(sqlcmd) Call closeConn(sqlconn) End Try Return flag End Function ''' <summary> ''' 无参数执行(增删改)操作 ''' </summary> ''' <param name="cmdText">需要执行的命令</param> ''' <param name="cmdType">执行命令的类型</param> ''' <returns></returns> ''' <remarks></remarks> Public Function ExecuteAddDeleteUpdate(ByVal cmdText As String, ByVal cmdType As CommandType) As Boolean sqlcmd.CommandText = cmdText '执行的语句 sqlcmd.CommandType = cmdType '执行语句的类型 sqlcmd.Connection = sqlconn '设置链接 Dim flag As Boolean Try sqlconn.Open() '打开数据库 flag = sqlcmd.ExecuteNonQuery() '执行 Catch ex As Exception flag = False '如果出错 Finally Call closeCmd(sqlcmd) Call closeConn(sqlconn) End Try Return flag End Function ''' <summary> ''' 执行有参数的查询操作 ''' </summary> ''' <param name="cmdText">执行查询的语句</param> ''' <param name="cmdType">语句类型</param> ''' <param name="sqlParams">参数</param> ''' <returns>返回查询结果</returns> ''' <remarks></remarks> Public Function ExecuteSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable Dim sqlAdapter As SqlDataAdapter '声明一个适配器 Dim dTable As New DataTable '实例化一个数据表 Dim Dcache As New DataSet '实例化一个数据缓存 sqlcmd.CommandText = cmdText '要执行的语句 sqlcmd.CommandType = cmdType '语句类型 sqlcmd.Parameters.AddRange(sqlParams) '传入参数 sqlcmd.Connection = sqlconn '设置连接 sqlAdapter = New SqlDataAdapter(sqlcmd) '实例化适配器 Try sqlAdapter.Fill(Dcache) '对适配器进行填充 dTable = Dcache.Tables(0) '返回数据集的第一张表 sqlcmd.Parameters.Clear() '清空参数 Catch ex As Exception MsgBox("查询失败!", vbOKOnly + vbInformation, "提示") Finally Call closeCmd(sqlcmd) Call closeConn(sqlconn) End Try Return dTable End Function ''' <summary> ''' 执行无参数的查询操作 ''' </summary> ''' <param name="cmdText"></param> ''' <param name="cmdType"></param> ''' <returns></returns> ''' <remarks></remarks> Public Function ExecuteSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable Dim sqlAdapter As SqlDataAdapter '声明一个适配器 Dim dTable As New DataTable '实例化一个数据表 Dim Dcache As New DataSet '实例化一个数据缓存 sqlcmd.CommandText = cmdText '要执行的语句 sqlcmd.CommandType = cmdType '语句类型 sqlcmd.Connection = sqlconn '设置连接 sqlAdapter = New SqlDataAdapter(sqlcmd) '实例化适配器 Try sqlAdapter.Fill(Dcache) '对适配器进行填充 dTable = Dcache.Tables(0) '返回数据集的第一张表 sqlcmd.Parameters.Clear() '清空参数 Catch ex As Exception MsgBox("查询失败!", vbOKOnly + vbInformation, "提示") Finally Call closeCmd(sqlcmd) '关闭命令 Call closeConn(sqlconn) '关闭连接 End Try Return dTable End Function End Class</span>
我的sqlHelper中一共分了两大类:查询、非查询。其中每一类中又包括带参数、不带参数。但是我在实践中发现,带不带参都无所谓,其实我们完全可以都用带参的操作,即使参数中没有任何东西。下面看看在D层是如何调用的:
<span style="font-size:18px;">Imports Entity Imports IDAL Imports System.Data.SqlClient Imports System.Windows.Forms ''' <summary> ''' 查询上机记录 ''' </summary> ''' <remarks></remarks> Public Class QueryLineRecordDAL : Implements IDAL.IQueryLineRecord ''' <summary> ''' 查询上机记录 ''' </summary> ''' <param name="CardID"></param> ''' <returns></returns> ''' <remarks></remarks> Public Function QueryLineRecord(CardID As String) As List(Of LineEntity) Implements IQueryLineRecord.QueryLineRecord Dim sqlHelper As New SqlHelper Dim cmdText As String = "select * from T_LineRecord where cardID='" & CardID & " '" Dim cmdType As CommandType = CommandType.Text Dim parameters As SqlParameter() parameters = {} Dim dt As New DataTable Dim myList As New List(Of Entity.LineEntity) dt = sqlHelper.ExecuteSelect(cmdText, cmdType, parameters) myList = EntityHelper.convertToList(Of Entity.LineEntity)(dt) Return myList End Function End Class</span>
其实本来应该是不用带参数的,只是这里我为了展现的全面一些,我写上parameters了,虽然在这个过程中它没有实际作用。刚开始我也是照着别人的博客来学用sqlHelper,理解不深,但是后来越用越能发现它的方便,大大提高了代码的复用。希望对大家有帮助,也帮助我改进!
相关文章推荐
- 机房收费系统个人重构关于SQLHelper
- 机房收费系统个人重构关于SQLHelper
- 个人重构机房收费系统——SqlHelper介绍
- 个人重构机房收费系统SqlHelper的使用
- 数据库重建----个人版机房收费系统重构
- 机房收费系统(个人重构)——外观模式
- 重构机房VB.NET<机房收费系统个人重构版>你都学会了什么(之一)
- 机房收费系统个人重构版(一)
- 机房收费系统个人重构——画图疑惑多多
- 重构个人版机房收费系统——sqlHelper
- 机房收费系统个人重构版2——组合查询之模板方法
- 个人重构机房收费系统报表使用之最简单的显示连接
- 个人重构机房收费系统小总结
- 机房收费系统个人重构版:透过文档谈文档驱动开发
- 类图问题机房收费系统个人重构——画图疑惑多多Strut2教程-java教程
- 个人重构机房收费系统——报表制作
- 个人重构机房收费系统——类图
- 个人重构机房收费系统DataGridView显示用户信息
- 个人重构机房收费系统——配置文件
- 机房收费系统.NET个人重构总结