您的位置:首页 > 数据库

机房收费系统重构之SQLhelper的理解

2016-03-13 19:47 405 查看
在敲完登录以后,随着越来越来功能实现,发现有时候在一个窗体中就有可能访问3`4张表,这样没访问一遍数据库就写一遍连接语句,显然不符合我们设计原则。所以这时候就需要我们去想办法把这些重复的代码进行封装,提高代码的复用性。所以SQLHelper就顺应时代出现了。下面简单介绍一下:

定义:

SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

使用方法

SqlHelper类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用SqlHelper类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。

实例

网上的SqlHelper方法一般都是ExecuteNonquery,ExecuteReader,前面是针对增删改,后面那个针对查询。还有ExecuteDataTable,可以返回DataTable类型的结果,就可以和DataGridView控件绑定数据。这两个都有有参和无参版。有参表示,有传入值,无参表示无传入值,比如查询一个表中的所有数据,就不需要任何条件,无参就好了。

''' <summary>
''' 执行查询的操作,(有参),参数不限
''' </summary>
''' <param name="cmdText">需要执行语句,一般是sql语句,也有存储过程</param>
''' <param name="cmdType">判断sql语句的类型,一般都不是存储过程</param>
''' <param name="sqlParams">传入的参数</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function ExeSelect(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.CommandText = cmdText
cmd.CommandType = cmdType
cmd.Connection = conn
cmd.Parameters.AddRange(sqlParams)
sqlAdapter = New SqlDataAdapter(cmd)  '实例化adapter
Try

sqlAdapter.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 CloseCmd(cmd)
End Try
Return dt

End Function

''' <summary>
''' 执行查询的操作,(无参)
''' </summary>
''' <param name="cmdText">需要执行语句,一般是sql语句,也有存储过程</param>
''' <param name="cmdType">判断sql 语句的类型,一般 都不是存储过程</param>
''' <returns>datatable ,查询到的表格</returns>
''' <remarks></remarks>
Public Function ExeSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
Dim sqlAdapter As SqlDataAdapter
Dim ds As New DataSet

cmd.Connection = conn
cmd.CommandType = cmdType
cmd.CommandText = cmdText
sqlAdapter = New SqlDataAdapter(cmd) '实例化adapter
Try

sqlAdapter.Fill(ds)
Return ds.Tables(0)

Catch ex As Exception
Return Nothing
Finally
Call CloseCmd(cmd)
End Try
End Function

【总结】[/code]
机房收费系统我们已经敲过一遍了,不管怎么我们再一次去学习的时候,总是要和第一次要进步。既然开始学习面向对象的思想,当然要对这些不变的要内容要进行打包,提高代码复用。可能在刚开始的时候我们对于七层的机房不知道怎么去做,那就把每一块先弄懂,有句话“工欲善其事必先利其器”,这样在敲其他窗体的时候我们才能更加顺手。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: