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

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

SQLHlper意识的更多相关文章

  1. 由Java中toString()方法引发的无意识的递归想到的

    先看一段很简单的java代码: toString()/** * @author jeffwong */ public class InfiniteRecursion { public String t ...

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

    GIS制图人员的自我修养(2)--制图意识 by 李远祥 上次提及到GIS制图人员的一些制图误区,主要是为GIS制图人员剖析在制图工作中的一些问题.但如何提高制图的自我修养,却是一个非常漫长的过程,这 ...

  3. 2017TSC世界大脑与科技峰会,多角度深入探讨关于大脑意识

    TSC·世界大脑与科技峰会是全世界范围内的集会,多角度深入探讨关于大脑意识体验来源这一根本话题,我们是谁,现实的本质是什么,我们所处宇宙空间的本质为何.该峰会由亚利桑那大学意识研究中心主办. 会议时间 ...

  4. PM意识升级2.0

    上一篇<质量:“PM,你怎么可以放弃我?!”>,我们匡正了PM的一个意识:质量是PM的底线和目标,也算是PM意识升级的1.0.同时提出,只有“正确的做正确的事”才是保证质量,且成本相对最低 ...

  5. 意识科学初步:David Chalmers的简单问题与困难问题

    这是第一篇关于意识科学的内容.主要谈一下阅读大卫查莫斯的几篇论文的一些观点和思考. 论文作者简介(摘自wiki): David John Chalmers (born 20 April 1966) i ...

  6. 核心思想:决定你是富人还是穷人的11条标准(有强烈的赚钱意识,这也是他血液里的东西,太精彩了)good

    原文地址:决定你是富人还是穷人的11条标准作者:谢仲华 1.自我认知 穷人:很少想到如何去赚钱和如何才能赚到钱,认为自己一辈子就该这样,不相信会有什么改变. 富人:骨子里就深信自己生下来不是要做穷人, ...

  7. 【转载】 “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识

    原文地址: https://yq.aliyun.com/articles/400366 本文来自AI新媒体量子位(QbitAI)     ------------------------------- ...

  8. 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则

    朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则 [下载本文PDF进行阅读] 本文有两个部分,先介绍一下给飞机换引擎这个事情我的一些经验,因为篇幅较短然后介绍一下安全意识方面的一些心得. ...

  9. 无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态)

    无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态) 1. 从“无意识-->有意识”的两个重要内容是“反省”+“要努力学习”,估计有80%的人无法跨过这一步 2. ...

随机推荐

  1. Linux下SVN账户密码保存设置

    Linux下用SVN进行更新等操作时,总是提示输入用户名和密码,很不方便.因此搜了下解决办法,总结如下: 打开SVN配置文件: vim /home/<user>/.subversion/c ...

  2. V5

    系统设置--关于手机--版本号点5下--进去开发模式--打开开发选项--打开USB调试.然后在连接第三方助手软件 http://bbs.ztehn.com/thread-19037-1-1.html

  3. 在配置文件(.settings、.config)中存储自定义对象

    原文:在配置文件(.settings..config)中存储自定义对象 引言 我前面曾写过一篇<使用配置文件(.settings..config)存储应用程序配置>,我在其中指出“sett ...

  4. sgu 286. Ancient decoration(最小环覆盖)

    给你一个n个点,每个点度为k(k为偶数)的无向图,问是否能将图中的n条边染色,使得每个点都拥有两条被染色的边.也就是说,是否存在拥有原图中n条边的子图,使得每个点的度为2?仔细想想,每个点的度为2,实 ...

  5. htc one x刷机记录

    这几天有些空余时间都用来刷htc one x,来说说刷机的艰难史吧. 首先是利用百度云rom刷机,本来一直用小米系统,突然发现百度云也能够搞个,所以心血来潮要刷个百度云,先利用软件解锁,哪知道没细致看 ...

  6. 深入了解mysql它BDB系列(1)---BDB基础知识

        深入了解mysql它BDB系列(1) ---BDB关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的.包括五个子系统(见图1.1中 ...

  7. 阅读UML类图和时序图

    这里不会将UML的各种元素都提到.我仅仅想讲讲类图中各个类之间的关系. 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同一时候,我们应该能将类图所表达的含义和终于 ...

  8. hdu3530Subsequence rmq

    //使用rmq办,ma[i][j],同i作为一个起点2^j阵列的最大长度值 //启动枚举问最长的子列 //枚举的最大长度2^(j-1)和2^(j)z之间 //然后在该范围内找到 #include< ...

  9. windows下使用lighttpd+php(fastcgi)+mysql

    一.windows下编译配置执行lighttpd 1.下载并安装cygwin. 2.下载lighttpd源码并解压3.在cygwin环境下进入lighttpd的解压文件夹后,执行: 1> ./c ...

  10. 使用Intellij Idea生成可执行文件jar,开关exe文件步骤

    确保其Java代码是没有问题的,在IDEA常执行的,然后.按以下步骤: 步骤一:打开File -> Project Structure -> Artifacts,例如以下图 步骤二:点击& ...