SQLHlper意识

经过学习,通过线敲登录的三个例子,敲四行CRUD样品,因此,访问数据库多次,在这些链接库、打开都一样。只是不同的操作将针对不同的表进行。始学习面向对象的思想。当让要对这些不变的要内容要进行打包,提高代码复用。

所以就了解到了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好像是自己做好的一个零件,当它被须要时就能够直接的拿去使用。而它本身又能够由别的零件组成。不仅提高了代码的复用性,并且在做改动的时候能够改动须要改动的“零件”。解耦和的优点啊。还须要在实践中有许多其他的经验。!!

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-08 10:52:57

SQLHlper意识的相关文章

一个没水平的钓鱼网站黑三个人:人们的安全意识和安全知识的缺失

今天,在我的qq好友里面发生这这么一件事情.我的表妹qq被盗,在空间里发了一个钓鱼网站的动态.不久我表妹的表哥的qq空间也发出了同样的动态.过了四五个小时吧,我表弟的空间里也冒出了一样的钓鱼网站动态.最后,还是我去跟他们说清楚情况,让他们通知好友更改密码才结束了这场令人哑然的连环钓鱼攻击. 下面就是动态的内容.大家可以看一下,这段文字稀松平常,说不上多么的高明,只是用上了一点点不成熟的社会工程学罢了.而且这个域名很怪,很容易让人警觉.如果攻击者高明一点,拿到登录权限后,先看一下他qq里的朋友圈,

【意识觉醒】无我,并不会失去自我

2016-11-21                                                 禅境本真                                                 自净其意                         自净其意 自净其意                                 微信号                                 zijingqiyi_hz 功能介绍             

浅谈网络安全问题 我们却缺乏安全意识

随着互联网安全问题的增多,网络安全行业成了一个快速发展的行业.根据研究公司Markets and Markets的报告,网络安全行业的年增长率超过了10%,到2021年,它将是一个超2000亿美元的大产业.不过,对于互联网用户来说,这并不是什么好消息.人们需要更多的计算机安全知识,但是,大多数人对此并无兴趣,或者缺乏相应的技术能力. 目前网络安全工作正在从过去的"防护"为核心向两个方向转移,一个方向是向前,强调对于攻击事件发生之前,进行风险管理和威胁预警,尽量降低网站被攻击的可能性.一

为什么说人工智能+物联网=人类集体意识历史性飞跃?

2015-03-05 eNet&Ciweek/么咏仪 大约在距今七八百万年前,古猿转变成两足直立行走的人类始祖,到现在人类发展如你我相见这般说明"适者生存"才是对"进步"唯一的正解.互联网行业的发展如同人类进化优胜劣汰.回想人们早期在BBS发帖跟帖,单一的功能却影射人们多样的需求,但通过二十年的发展,这些需求都单独分别形成了一些功能更为完善的网站,搜索引擎.新闻网站.电子商务.视频站点.交友平台等,然后这些功能完善的网站其中几个逐渐变成巨头之后,造就BAT辉

职业化意识

1.(自我)管理意识 -时间管理 -生活管理 -诚信管理 2.质量意识 -以客户为中心 3.流程意识 4.效率意识 -重复的事不要超过3遍 5.团队意识 6.学习意识 7.逻辑意识 8.(自我)批判意识

《从0到1》读书笔记第4章“竞争意识”第1记:雾失楼台,月迷津渡

一直以来我们接受的教育都是教导我们要做个出类拔萃的好学生,小学如此,中学这般,大学也是如是.而评论是否是个好学生的标准在我国有"三好学生"做衡量,而随着社会就业竞争形势的日益严峻,"三好学生"的评定标准中的两好"德,体"已经变得可有可无形存实亡了,所以完全可以剔除掉.剩下的"智"才是衡量一个学生是否有前途的唯一标准!而在中国,情况更要特殊,这个"智"字还要进一层的剔除掉其他的一些积极的意义,剩下的就直接等同

弗洛伊德的人格结构说中潜意识,前意识,意识和自我,本我,超我的区别

意识是大脑对客观存在的反应,是个体在任何时刻觉察到的感觉与体验,既有特性又有共性. 人格是人的性格与气质,是个体的特性. 意识分为:显意识.前意识.无意识(=潜意识?=原意识?).弗洛伊德原作中为"无意识",后来被"潜意识"取代,现在又有人用"原意识"描述,但三者还是略有区别. 显意识,也称显层意识,即"思想",是个体人生活在人类群体(社会)所受到影响的结果.显层意识是直接决定人的行为的意识,显层意识也是人区别于动物的显著的质

GIS制图人员的自我修养(2)--制图意识

by 李远祥 上次提及到GIS制图人员的一些制图误区,主要是为GIS制图人员剖析在制图工作中的一些问题.但如何提高制图的自我修养,却是一个非常漫长的过程,这一章主要为提升制图修养作一些理论铺垫.其中,最值得强调的就是制图意识. 什么是制图意识?就是当第一时间看到数据的时候,就立刻针对该数据做出反应,基本上形成初步的制图思路,并确定制图的技术路线.说到底,所谓的制图意识,对于制图界的老鸟来说,就是经验.但是经验往往是需要长时间的积累的.还有一种情况就是具有制图天赋的人,天生就具备这种敏锐的触觉.但

习惯与自由意识--文摘

<习惯是什么?> http://blog.sina.com.cn/s/blog_536b59bf0100wyzs.html 1我们无法决定“自由做”什么,只能决定“自由不做”什么 2我们可以通过改变内外在环境,来形成新的习惯. 3 对习惯重新定义一下: 普通的定义为:积久养成的生活方式. 新的定义:在特定的环境下,人们会重复做出的某种行为. 4 如何消除坏习惯? 每次只消除一个,因为我们精力有限: 注意外在环境,如时间.周遭环境.和谁在一起,尽量避免: 内在环境:找到你真正需要的,用新方式满足