SQLHlper的认识
三层的学习中敲通登录的一条线的例子之后,要敲增删改查四条线的例子,所以会多次的访问到数据库,这其中对数据库的链接、打开都是一样的,只是会针对不同的表进行不同的操作,既然开始学习面向对象的思想,当让要对这些不变的要内容要进行打包,提高代码复用。所以就了解到了SQLHlper。这是对数据库连接以及操作的封装,我们在使用的时候只需要传入参数就能打开数据库,对相应的表进行操作。
自己的SQLHlper借鉴了“巨人”的经验,同时也做了自己的改进。下面来看一下我的SQLHlper。
首先对数据库的链接需要使用连接字符串和command命令
<span style="color:#009900;">'有参数的非查询操作 其中的参数CommandType 表示如何解释命令字符串</span> Public Shared Function ExecuteNoQuery(ByVal cmdtxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Integer <span style="color:#33ff33;"> </span><span style="color:#009900;">'定义链接的字符串,同时使用配置文件对ConnStr进行配置</span> Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr") <span style="color:#009900;">'定义一个链接,他的参数是建立的链接字符串</span> Dim conn As SqlConnection = New SqlConnection(strConnStr) <span style="color:#009900;"> '定义一个命令,cmdtxt参数是sql语句,conn是对数据库的链接字符串</span> Dim cmd As SqlCommand= New SqlCommand(cmdtxt, conn) cmd.CommandType = cmdType <span style="color:#009900;">'定义command命令的类型</span> cmd.Parameters.AddRange(paras) <span style="color:#009900;">'添加参数</span> Return NoSelectResult(conn, cmd) <span style="background-color: rgb(255, 255, 255);"><span style="color:#009900;">'这一部分是调用的抽象出来的函数</span></span> End Function <span style="color:#009900;">'执行有参数的查询</span> Public Shared Function GetDataTable(ByVal cmdTxt As String, cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
<pre name="code" class="vb"> <span style="color:#009900;">'定义使用程序配置的字符串,连接数据库</span>
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
Dim conn As SqlConnection = New SqlConnection(strConnStr) <span style="color:#009900;"> '定义一个新的sql连接字符串</span> Dim cmd As SqlCommand = New SqlCommand(cmdTxt, conn) <span style="color:#009900;">'定义一个新的sqlCommand命令</span> Dim Adataset As New DataSet <span style="color:#009900;">'定义一个DataSet可以用来储存查到的结果</span> Dim adaptor As SqlDataAdapter <span style="color:#009900;"> '用将查到的结果填到DataSet中</span> Dim adatatable As New DataTable <span style="color:#009900;"> '定义新的表,在DataSet中可以存放多张表</span> adaptor = New SqlDataAdapter(cmd) <span style="color:#009900;">'得到cmd执行的结果</span> cmd.CommandType = cmdType <span style="color:#009900;">'定义CommandType的类型</span> cmd.Parameters.AddRange(paras) <span style="color:#009900;">'将要使用的参数添加到command命令中</span> Return SelectResult(conn, adaptor, Adataset) End Function
以上分别为有参数的非查询和查询的SQLHlper的函数,对应的没有参数非查询和查询的只需要将参数部分的定义去掉就好。
如下是自己改进的部分,抽象出来判断数据库链接情况和执行command命令的,因为四种情况都会用到而且没有变化,所以可以把不变的这部分抽象出来。
<span style="color:#009900;">'查询的可以调用</span> Public Shared Function SelectResult(ByVal conn As SqlConnection, ByVal adaptor As SqlDataAdapter, ByVal Adataset As DataSet) As DataTable Try If conn.State = ConnectionState.Closed Then <span style="color:#009900;">'判断链接的状态,如果是关闭的则打开</span> conn.Open() adaptor.Fill(Adataset)<span style="color:#009900;"> '然后将查询到的结果填入到定义好的DataSet中</span> End If Catch ex As Exception MsgBox(ex.Message, , "数据库操作") Finally If conn.State = ConnectionState.Open Then <span style="color:#009900;">'最后判断链接的状态,如果是开着的则关闭</span> conn.Close() End If End Try Return Adataset.Tables(0) <span style="color:#009900;">'返回DataSet中的表</span> End Function <span style="color:#009900;"> '非查询的可以调用</span> Public Shared Function NoSelectResult(ByVal conn As SqlConnection, ByVal cmd As SqlCommand) As Integer Dim res As Integer Try If conn.State = ConnectionState.Closed Then conn.Open() End If res = cmd.ExecuteNonQuery() <span style="color:#009900;">'执行非查询动作,将受影响的行数返回</span> Catch ex As Exception MsgBox(ex.Message, , "数据库操作") Finally If conn.State = ConnectionState.Open Then conn.Close() End If End Try Return res End Function
小结
对于SQLHlper本身的代码部分的理解是没有难度的,通过SQLHlper能进一步的认识到面向对象的好处,并且自己也试着简单的抽象一些东西,SQLHlper好像是自己做好的一个零件,当它被需要时就可以直接的拿去使用,而它本身又可以由别的零件组成,不仅提高了代码的复用性,而且在做修改的时候可以修改需要修改的“零件”,解耦和的好处啊,还需要在实践中有更多的体会!!!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。