SqlHelper——数据库小助手
SqlHelper其实就是一个类。
早就听说过“SqlHelper”这个名词,也查过相关的资料,但还是一头雾水。当真的去实践去用它时,就会发现其实它没那么神秘。
当敲第一个窗体的时候,功能实现了,我们就会觉得很高兴,大功告成了。可是当敲完第二个窗体、第三个窗体的时候,慢慢的就开始觉得代码重复的太多了,越敲就越觉得心虚。虽然设计模式学的不怎么样,但是最起码让我有了这个意识去想怎么让代码更少一些,让彼此之间的耦合度尽量减少。在三层中,要数D层的代码相似度最高了,总结来说,也就是连接数据库,增删改查的功能。那么,我们完全可以把这部分共同的东西拿出来放在一起,这样既能减少了代码量,也很好的做到了封装。
SqlHelper这个类里,有几个方法。
在sqlhelper中,最重要的无非是那几个增删改查的方法了。查了很多博客,类中的方法也有很多种,包括ExecuteNonQuery、ExecuteReader、ExecuteDataSet、ExecuteScalar、ExecuteXmlReader等,但我们并不会都用到,有的方法了解一下就好了。方法可以划分的细,但如果分的太细,就会弄的太复杂了。我习惯把方法分的少一些。
Public Class sqlHelper
''' <summary>
''' 有参数的增、删、改操作
''' </summary>
''' <param name="cmdText"></param>
''' <param name="cmdType"></param>
''' <param name="paras"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function ExecuteNoQuery(cmdText As String, cmdType As CommandType, paras As SqlParameter()) As Integer
Dim ConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
Dim conn As SqlConnection = New SqlConnection(ConnStr)
'定义一个命令对象
Dim cmd As New SqlCommand
cmd = New SqlCommand(cmdText, conn) 'budong
cmd.CommandType = cmdType
cmd.Parameters.AddRange(paras)
Dim res As Integer '定义一个变量用户存放返回结果 Try
'打开数据库
If conn.State = ConnectionState.Closed Then conn.Open()
End If res = cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, "数据库操作")
Finally
'关闭数据库
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return res '返回受影响的行数
End Function ''' <summary>
''' 无参数的增、删、改操作
''' </summary>
''' <param name="cmdText"></param>
''' <param name="cmdType"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function ExecuteNoQuery(cmdText As String, cmdType As CommandType) As Integer
Dim ConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
Dim conn As SqlConnection = New SqlConnection(ConnStr) Dim cmd As New SqlCommand '定义一个命令对象
cmd.CommandType = cmdType cmd = New SqlCommand(cmdText, conn)
Dim res As Integer '定义一个变量用户存放返回结果
'cmd.Parameters.AddRange(paras) 该方法没有参数,不用添加
Try
'打开数据库
If conn.State = ConnectionState.Closed Then conn.Open()
End If res = cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, "数据库操作")
Finally
'关闭数据库
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
'返回受影响的行数
Return res
End Function ''' <summary>
''' 有参数的查询操作
''' </summary>
''' <param name="cmdTxt"></param>
''' <param name="cmdType"></param>
''' <param name="paras"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
'定义一个数据库连接对象
Dim conn As SqlConnection = New SqlConnection(strConnStr)
'定义一个命令对象
Dim cmd As New SqlCommand
Dim adataset As DataSet
'定义一个适配器对象
Dim adaptor As SqlDataAdapter
cmd = New SqlCommand(cmdTxt, conn)
adaptor = New SqlDataAdapter(cmd)
adataset = New DataSet
cmd.CommandType = cmdType
cmd.Parameters.AddRange(paras)
Try
'打开数据库连接
If conn.State = ConnectionState.Closed Then
conn.Open() End If
'填充数据集
adaptor.Fill(adataset)
Return adataset.Tables(0)
Catch ex As Exception
MsgBox(ex.Message)
Finally
'关闭数据库连接
If conn.State = ConnectionState.Open Then
conn.Close() End If
End Try End Function ''' <summary>
''' 无参数的查询操作
''' </summary>
''' <param name="cmdTxt"></param>
''' <param name="cmdType"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType) As DataTable
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
'定义一个数据库连接对象
Dim conn As SqlConnection = New SqlConnection(strConnStr)
'定义一个命令对象
Dim cmd As New SqlCommand
Dim adataset As DataSet
'定义一个适配器对象
Dim adaptor As SqlDataAdapter
cmd = New SqlCommand(cmdTxt, conn)
adaptor = New SqlDataAdapter(cmd)
adataset = New DataSet
cmd.CommandType = cmdType
'cmd.Parameters.AddRange(paras) 没有参数,无需添加
Try
'打开数据库连接
If conn.State = ConnectionState.Closed Then
conn.Open() End If
'填充数据集
adaptor.Fill(adataset)
Return adataset.Tables(0)
Catch ex As Exception
MsgBox(ex.Message, , "数据库操作")
Finally
'关闭数据库连接
If conn.State = ConnectionState.Open Then
conn.Close() End If
End Try End Function End Class
类有了,那怎么用呢?
有了参数,不就可以调用了。
CmdTxt就是sql语句。
CommandType有三个属性:StoredProcedure(存储过程),TableDirect(表),text(SQL文本命令,较常用)。
SqlParameter属性:在写sql语句的时候我们会定义变量,SqlParameter就是用来给数据库中定义的变量传值用的。
例如:
Dim paras As SqlParameter() = {New SqlParameter("@cardno", student.cardno)}
@cardno是变量,student.cardno是实体的值。
注意:Add与AddRange的区别
Add:将指定的对象添加到……中,AddRange:向……末尾,添加数组
Add该方法每次只能添加一个SqlParameter。AddRange可添加多个SqlParameter。在群里操作时,使用AddRange取代Add。
这样,我们的SqlHelper小助手就可以帮助完善我们的代码了。遇到一个问题,不用恐惧,先把它简单化,等我们对它有了一定的理解后再去看它复杂的地方。当我们可以灵活的使用ExecuteNonQuery、ExecuteReader、ExecuteDataSet的方法后,其他的内容也就不会难倒我们了。
SqlHelper——数据库小助手的更多相关文章
- DbHelper-SQL数据库访问助手
using System; using System.Data; using System.Data.SqlClient; namespace Whir.Software.Framework.Ulti ...
- [原]DbHelper-SQL数据库访问助手
using System; using System.Data; using System.Data.SqlClient; namespace Whir.Software.Framework.Ulti ...
- 发布代码小助手V2.1发布了——Code2HTML工具
设计起源: 新浪博客似乎没有插入代码的功能,所以不得不用打空格的方法格式化代码.而且没法显示行号. 描述: 发布代码小助手用python和Tkinter开发,可以在任何常见操作系统上运行.主要用于在不 ...
- 书签小助手V1.1发布了
更新信息: 1.修改了部分BUG;2.添加了一些不错的网站:3.重新设计了添加书签和编辑书签的界面. 安装说明: 类Ubuntu系统: 1.安装Python3解释器和Python3-tk sudo a ...
- 环境监测小助手V1.1的Windows版
环境监测小助手V1.1——可以实时查看空气质量和城市排名 一款跨平台空气质量监测软件 数据来源互联网,请联网使用. 暂不支持效果预览. 下载地址:http://files.cnblogs.com/py ...
- Windows版词汇小助手V3.0发布了
欢迎使用词汇小助手 作者:IT小小龙 电子邮箱:long_python@126.com 个人博客:http://blog.sina.com.cn/buduanqs 一款跨平台词汇查询记忆学习软件. 已 ...
- 词汇小助手V3.0发布了——不只是一个查单词的软件
欢迎使用词汇小助手 作者:IT小小龙 电子邮箱:long_python@126.com 个人博客:http://blog.sina.com.cn/buduanqs 一款跨平台词汇查询记忆学习软件. 已 ...
- 生日小助手V4.0——迁移到Python3
生日小助手V4.0——迁移到Python3 生日小助手V4.0只支持Linux系统,依赖命令行软件lunar Ubuntu系统安装方法:1.安装lunarsudo apt-get install lu ...
- DEDECMS-helper小助手扩展
今天在做DEDE动态调用模板的时候卡住了,后终被强大的互联网解决,记录解决问题的过程,以备后用 可以在/data/helper.inc.php中进行默认小助手初始化的设置,系统默认载入小助手 例如创建 ...
随机推荐
- 第26章 FMC—扩展外部SDRAM—零死角玩转STM32-F429系列
第26章 FMC—扩展外部SDRAM 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- 前端JavaScript之DOM节点操作
1.HTML DOM是啥 Document Object Model:定义了访问和操作HTML文档的标准方法,把HTML文档呈现为带有元素,属性和文本的树状结构 2.解析过程 HTML加载完毕,渲染引 ...
- Python,针对指定文件类型,过滤空行和注释,统计行数
参考网络上代码编辑而成,无技术含量,可自行定制: 目前亲测有效,若有待完善之处,还望指出! 强调:将此统计py脚本放置项目的根目录下执行即可. 1.遍历文件,递归遍历文件夹中的所有 def getFi ...
- 解决 Jsp_Servlet 编码乱码问题
Tomcat8.0以上浏览器请求的数据编码格式(包含): Get请求的时候Tomcat用UTF-8处理 post请求的时候Tomcat用ISO8859-1处理 Tomcat8.0以下浏览器请求的数据编 ...
- 3.Netty的粘包、拆包(二)
Netty提供的TCP数据拆包.粘包解决方案 1.前言 关于TCP的数据拆包.粘包的介绍,我在上一篇文章里面已经有过介绍. 想要了解一下的,请点击这里 Chick Here! 今天我们要讲解的是Net ...
- 当Java遇见了Html--Jsp九大内置对象篇
jsp内置对象对象是web容器创建的一组对象,不使用new关键词久可以使用的内置对象. 九大内置对象包括以下: out --JspWriter request --ServletRequest rep ...
- RedHat6.4安装图形行化界面
1.1 打开电源进入RedHat shell命令行界面 1.2 查看系统镜像包括的所有软件包组信息 [root@zhongyi-test ~]# yum grouplist Loaded ...
- 实例讲解如何利用jQuery设置图片居中放大或者缩小
大家有没有见过其他网站的图片只要鼠标放上去就能放大,移出去的时候就能缩小,而且一直保持居中显示!其实jQuery提供一个animate函数可以使图片放大和缩小,只要改变图片的长和高就OK啦!但是ani ...
- arm-none-linux-gnueabi-gcc No such file or directory这个错误的解决方法
这个gcc可执行文件是32位的版本,而在64位系统上需要安装32位兼容包才可以运行正常 .用file命令查看这个文件得到: 解决办法: 安装ia32-libs sudo apt-get install ...
- ./vi: line 2: mkdir: command not found
当前两天博主在写脚本的时候,运行脚本时候总是出现此消息,很郁闷, 开始我以为可能是我mkdir的函数库依赖的问题,但是当我用其他的脚本创建 目录的时候,命令又可以用了,找了半天,终于找到了答案 --- ...