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好像是自己做好的一个零件,当它被须要时就能够直接的拿去使用。而它本身又能够由别的零件组成。不仅提高了代码的复用性,并且在做改动的时候能够改动须要改动的“零件”。解耦和的优点啊。还须要在实践中有许多其他的经验。!!
版权声明:本文博主原创文章,博客,未经同意不得转载。
SQLHlper意识的更多相关文章
- 由Java中toString()方法引发的无意识的递归想到的
先看一段很简单的java代码: toString()/** * @author jeffwong */ public class InfiniteRecursion { public String t ...
- GIS制图人员的自我修养(2)--制图意识
GIS制图人员的自我修养(2)--制图意识 by 李远祥 上次提及到GIS制图人员的一些制图误区,主要是为GIS制图人员剖析在制图工作中的一些问题.但如何提高制图的自我修养,却是一个非常漫长的过程,这 ...
- 2017TSC世界大脑与科技峰会,多角度深入探讨关于大脑意识
TSC·世界大脑与科技峰会是全世界范围内的集会,多角度深入探讨关于大脑意识体验来源这一根本话题,我们是谁,现实的本质是什么,我们所处宇宙空间的本质为何.该峰会由亚利桑那大学意识研究中心主办. 会议时间 ...
- PM意识升级2.0
上一篇<质量:“PM,你怎么可以放弃我?!”>,我们匡正了PM的一个意识:质量是PM的底线和目标,也算是PM意识升级的1.0.同时提出,只有“正确的做正确的事”才是保证质量,且成本相对最低 ...
- 意识科学初步:David Chalmers的简单问题与困难问题
这是第一篇关于意识科学的内容.主要谈一下阅读大卫查莫斯的几篇论文的一些观点和思考. 论文作者简介(摘自wiki): David John Chalmers (born 20 April 1966) i ...
- 核心思想:决定你是富人还是穷人的11条标准(有强烈的赚钱意识,这也是他血液里的东西,太精彩了)good
原文地址:决定你是富人还是穷人的11条标准作者:谢仲华 1.自我认知 穷人:很少想到如何去赚钱和如何才能赚到钱,认为自己一辈子就该这样,不相信会有什么改变. 富人:骨子里就深信自己生下来不是要做穷人, ...
- 【转载】 “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识
原文地址: https://yq.aliyun.com/articles/400366 本文来自AI新媒体量子位(QbitAI) ------------------------------- ...
- 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则
朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则 [下载本文PDF进行阅读] 本文有两个部分,先介绍一下给飞机换引擎这个事情我的一些经验,因为篇幅较短然后介绍一下安全意识方面的一些心得. ...
- 无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态)
无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态) 1. 从“无意识-->有意识”的两个重要内容是“反省”+“要努力学习”,估计有80%的人无法跨过这一步 2. ...
随机推荐
- 【JS】依据表格ID进行排序(附凝视)
分享一个前端做的依据表格ID进行排序的方法哈,贴码例如以下: HTML: <input type="button" id="btn1" value=&qu ...
- UVA 10142 Australian Voting(模拟)
题意:澳大利亚投票系统要求选民们将全部候选人按愿意选择的程度排序,一张选票就是一个排序.一開始,每张选票的首选项将被统计.若有候选人得票超过50%,他讲直接胜出:否则,全部并列最低的候选人出局,而那些 ...
- lca转RMQ
这个博客写得好 #include <stdio.h> #include <vector> #include <string.h> using namespace s ...
- java 配置及安装Eclipse
jdk下载 点我~ Java SE Development Kit 8u20 You must accept the Oracle Binary Code License Agreement for ...
- profile与bashrc
/etc/profile./etc/bashrc 是系统全局环境变量设定 ~/.profile,~/.bashrc用户家文件夹下的私有环境变量设定 当登入系统时候获得一个shell进程时.其读取环境设 ...
- poj2348(博弈)
poj2348 给定两个数a,b,大的数能减少小的数的倍数,不能是的数小于0,谁先使得数等于0,谁就赢了 有三种情况 ① a % b ==0 这个状态是必胜的 ② a - b < b 这个状 ...
- Windows Phone开发(6):处理屏幕方向的改变
原文:Windows Phone开发(6):处理屏幕方向的改变 俺们都知道,智能手机可以通过旋转手机来改变屏幕的显示方向,更多的时候,对于屏幕方向的改变,我们要做出相应的处理,例如,当手机屏幕方向从纵 ...
- SSO(Single Sign On)系列(一)--SSO简单介绍
任何类型的站点,到达一定规模之后一定会存在这种问题:比方我们有N个系统.传统方式下我们就须要有N对不同的username和password,本来这些系统的开发都能为我们带来良好的效益,用户在用的时候并 ...
- Ubuntu 13.10 安装 Unity 8 试用截图
关于 Unity 8 有很多报道,Unity 8 相对于 Unity 7 变化相当大,这是 Ubuntu 团队打造的一款通用于 PC.手机.平板的桌面. Unity 8 已经登陆 ubuntu 13. ...
- 《实验数据的结构化程序设计》 2.4.4Calendar个人意见,寻求指引
题目大意: 制作一个日历系统,输入年份.一些周年纪念日,及服务要求日期,依据要求日期输出,输出重要程度小于发生日期的周年纪念日. 题目地址: UVA 145 个人见解: 纯模拟,在闰年,输出顺序及输 ...