大佬教程收集整理的这篇文章主要介绍了VB.NET<机房收费系统个人重构版>你都学会了什么(之三),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
接着上篇对三层架构的介绍之后,来说一下SqlHelper.
想在开篇说一句,其实我陆续这几篇文章关于“VB.NET<机房收费系统个人重构版>你都学会了什么”,相对而言没有什么技术可言,就是一只笨鸟,将学到的一些东西,通过自己的视角展示出来。毕竟人不是生下来就什么都会的,而且处在一个开头的阶段,肯定有一些自己当初行走时的困惑和迷茫,也许别人在走相同的路的时候,也会有这样那样的困惑,所以拿出来和大家讨论、分享。
今天来说一下这个SqlHelper。在第一遍用三层重构机房收费系统的时候,我根本就没有用到SqlHelper,也根本不知道SqlHelper所为何物。因为上网查、看别人博客,也折腾了好久。其实对于SqlHelper的功用,我觉得应该捎带提一下。我们在编写代码的过程中,往往会出现一些重复的代码,当这些代码大量重复时,我们就要考虑该将这些重复的代码的公共部分提取出来,一旦需要时只要调用就可以了。这似乎有点儿像公共模块,或者说是函数。提取出公共部分,减少了因为大量重复而造成的冗杂,这就是我们要用SqlHelper的原因。在机房收费系统中,可能开始的时候我们抽取的SqlHelper没有那么完美,抽出来的sqlHelper还没有那么精简,但是看别人的经验、看别人的博客,上网找资料的过程中,发现别人抽出来的机房收费系统的SqlHelper是真好,在机房收费系统的sqlHelper中无疑只要4个函数就够了,分别是有参和无参的返回值为Boolean类型函数、有参和无参的返回值为DataTable类型的函数。只要这四个函数就可以满足整个机房收费系统中查询数据的问题了。需要注意的是我们在决定@R_696_8938@Helper中的哪个函数时要弄明白我们想得到什么,这一点其实很重要,也直接决定你的程序是否能够正确、正常的运行。
下面我拿SqlHelper其中一个函数来具体说明 一下它的使用及具体的调用。
这个是有参数,返回值为Boolean类型的函数。
''' <sumMary> ''' 执行增删改三个操作,(有参)返回值为Boolean类型,确认是否执行成功 ''' </sumMary> ''' <param name="strSql">需要执行语句,一般是sql语句,也有存储过程</param> ''' <param name="cmdType">判断sql语句的类型,一般都不是存储过程</param> ''' <param name="sqlParams">参数数组,无法确认有多少参数</param> ''' <returns>返回值为布尔型,成功为True,不成功为false</returns> ''' <REMARKs></REMARKs> Public Function ExecuteAddDelupdate(ByVal strSql As String,ByVal cmdType As CommandType,ByVal sqlParams As SqlParameter()) As Boolean '用传进的参数填充本类自己的cmd对象 cmd.Parameters.AddRange(sqlParams) '参数传入 cmd.Commandtype = cR_713_11845@dType cmd.Connection = cnn '设置连接 cmd.CommandText = strSql '设置查询的语句 Try cnn.open() '打开连接 Return cmd.ExecuteNonQuery() '执行增删改操作 cmd.Parameters.Clear() '清除参数 Catch ex As Exception Return false '如果出错,返回false Finally Call CloseSqlcnn() Call CloseSqlcmd () End Try End Function
''' <sumMary> ''' 执行查询操作,(有参)返回值为datatable类型 ''' </sumMary> ''' <param name="strSql">需要执行语句,一般是sql语句,也有存储过程</param> ''' <param name="cmdType">判断sql语句的类型,一般都不是存储过程</param> ''' <param name="sqlParams">参数数组,无法确认有多少参数</param> ''' <returns>返回一个表</returns> ''' <REMARKs></REMARKs> Public Function ExecuteSELEct(ByVal str As String,ByVal sqlParams As SqlParameter()) As DataTable Dim sqlAdapter As SqlDataAdapter Dim dtSQL As New DataTable Dim dsSQL As New DataSet '用传进的参数填充本类自己的cmd对象 cmd.CommandText = strSql cmd.Commandtype = cR_713_11845@dType cmd.Connection = cnn cmd.Parameters.AddRange(sqlParams) '参数添加 sqlAdapter = New SqlDataAdapter(cmd) '实例化adapter Try sqlAdapter.Fill(dsSQL) '用adapter将dataSet填充 dtSQL = dsSQl.Tables(0) 'datatable为dataSet的第一个表 cmd.Parameters.Clear() '清除参数 Catch ex As Exception MsgBox("查询失败",CType(vbOKOnly + MsgBoxStyle.Exclamation,MsgBoxStylE),"警告") Finally '最后一定要销毁cmd Call CloseSqlcmd() End Try Return dtSQL End Function
这是SqlHelper中关于有参、返回值为Boolean型的函数和有参、返回值为DataTable行的函数。要记住,第一个函数是在执行增、删、改中才能调用的函数,具体执行“查”的操作要用的是返回DataTable类型的函数。这个是怎么划分的?有什么依据吗?具体的不同之处也就在于在函数内部所执行的操作不同,也就导致了在不同的查询语句中调用不同的函数。下面举个例子说一下具体的调用。以登陆为例,@R_696_8938@Helper中的有参、返回值为DataTable类型的函数。具体操作如下:
Imports System.Data.SqlClient Imports SqlHelper Public Class LoginDAL : Implements IDAl.LoginIDAL ''' <sumMary> ''' 构造函数,查询用户表中是否有此用户存在 ''' </sumMary> ''' <param name="user">实体类参数,用来传递用户名和密码</param> ''' <returns>返回值为一个表</returns> ''' <REMARKs></REMARKs> Public Function QueryUser(ByVal user As Entity.UserTableEntity) As System.Data.DataTable Implements IDAl.LoginIDAl.QueryUser '数据库查询语句 Dim sqlstr As String sqlstr = "SELEct *from UserTable where UserID=@userID And UserPWD=@userPWD" '定义一个sqlHelper对象 Dim sqlHelp As New SqlHelper.SqlHelper Dim result As DataTable '设置参数 Dim sqlParams As SqlParameter() = { New SqlParameter("@userID",user.UserID),New SqlParameter("@userPWD",user.UserPWD) } '@R_696_8938@Helper result = sqlHelp.ExecuteSELEct(sqlstr,CommandType.Text,sqlParams) Return result End Function End Class
总之,SqlHelper还是要好好研究、好好使用的。貌似SqlHelper的使用让我们的程序看起来东西更多了,但是从本质上也使我们的程序更为精简,避免了大量重复代码的出现,符合编码规则同时也符合一个程序员编码的原则。
以上是大佬教程为你收集整理的VB.NET<机房收费系统个人重构版>你都学会了什么(之三)全部内容,希望文章能够帮你解决VB.NET<机房收费系统个人重构版>你都学会了什么(之三)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。