经过学习,通过线敲登录的三个例子,敲四行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. win7系统u盘安装过程

    1.准备好带有启动项的U盘,并把镜像解压到里面去 2.插上u盘,开机长按del键进入bois设置界面 在boot页面 1.boot device priority->1st boot devic ...

  2. 后台使用oracle前台使用easyui分页机制

    前台easyui 的datagrid中设置分页属性: pagination:true,//显示分页 pagePosition:'bottom',//分页栏位置 both 上下 bottom.top p ...

  3. Storm具体解释一、Storm 概述

    一.Storm概述      Storm是一个分布式的.可靠的.零失误的流式数据处理系统. 它的工作就是委派各种组件分别独立的处理一些简单任务.在Storm集群中处理输入流的是Spout组件,而Spo ...

  4. POJ 1205 Water Treatment Plants(递推)

    题意   建设一条河岸的污水处理系统  河岸有n个城市   每一个城市都能够自己处理污水 V   也能够把污水传到相邻的城市处理 >或<   除了你传给我我也传给你这样的情况   其他都是 ...

  5. 《深入浅出 Java Concurrency》—锁紧机构(一)Lock与ReentrantLock

    转会:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html 前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最 ...

  6. oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)

    一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...

  7. vultr centos x64 6.5.x 升级php7.0

    升级前,先卸载 php5.6.x 卸载php5.6.2 从cent 6.5.x 需要卸载: yum remove php56u-mysqlnd-5.6.20-1.ius.centos6.x86_64 ...

  8. AutoFac使用方法总结:Part III

    生命周期 AutoFac中的生命周期概念非常重要,AutoFac也提供了强大的生命周期管理的能力. AutoFac定义了三种生命周期: Per Dependency Single Instance P ...

  9. 【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

    内容简介 1.第二部分第四课:文件操纵,鼓掌之中 2.第二部分第五课预告:用户和权限 文件操纵,鼓掌之中 既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了. ...

  10. 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)

    原文:乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pa ...