正在机房重构中,自己一直在摸索,刚开始听说SqlHelper只是感觉很高深,都不知道是用来做什么用的,只是看见别人的博客上写的可以用来帮助连接数据库。但自己没有什么特别的感觉,就认真的去查阅资料来具体了解SQLHelper类。那么SQLHelper究竟是什么呢?我们一起来探索。。。

 是什么?

通过一组静态方法来封装数据访问功能,简单来说就是可以直接访问数据库,提供增删改查的功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper
类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。

     有哪些方法?

ExecuteNonQuery:此方法用于执行不返回任何行或值的命令。常用于执行数据库增、删、改,但也可用于返回存储过程的输出参数。 

    ExecuteReader:此方法用于返回 SqlDataReader 对象,该对象包含由某一命令返回的结果集。 

    ExecuteDataset:此方法返回 DataSet 对象,该对象包含由某一命令返回的结果集。用于对数据集的插入记录、 更新数据。

    ExecuteScalar:此方法返回一个值。该值得类型为Object类型。

ExecuteXmlReader:此方法返回XML格式的数据,主要是通过该方法访问数据库将数据转成XML格式。

这些是我们常用的方法,另外应该还有很多需要等待我们去实践。。

  怎么应用?

下面我就以机房为例来说明一下如何使用SqlHelper助手:

Public Class sqlHelper
'定义并连接数据库
Dim strCon As String = ConfigurationManager.AppSettings("ConnString")
'定义一个数据库连接对象
Dim conn As SqlConnection = New SqlConnection(strCon)
'定义一个命令对象
Dim cmd As New SqlCommand
    Public Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Integer
 
<span style="white-space:pre">	</span>'对cmd的属性进行赋值
cmd.Parameters.AddRange(sqlParams) '传入参数
cmd.CommandType = cmdType
cmd.Connection = conn '设置连接
cmd.CommandText = cmdText
Dim result As Integer Try
conn.Open()
result = cmd.ExecuteNonQuery() '执行增删改操作并返回受影响的行数
cmd.Parameters.Clear() '清除参数 Catch ex As Exception
MsgBox(ex.Message, , "数据库操作")
Finally
Call CloseConn(conn) '关闭连接
Call CloseCmd(cmd) '关闭命令
End Try
Return result
End Function 
    Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable

        Dim sqlAdapter As New SqlDataAdapter  '声明适配器
Dim dt As New DataTable '声明数据表
Dim ds As New DataSet '声明数据缓存 cmd.CommandType = cmdType
cmd.Connection = conn
cmd.CommandText = cmdText '设置查询语句 '将传入的值分别赋给cmd的属性
cmd.Parameters.AddRange(sqlParams) '将参数传入
sqlAdapter = New SqlDataAdapter(cmd) '实例化适配器 '执行操作
Try
sqlAdapter.Fill(ds) '用适配器对ds进行填充
dt = ds.Tables(0) '返回数据集的第一个表
cmd.Parameters.Clear() '清除参数
        Catch ex As Exception
MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
Finally
Call CloseConn(conn)
Call CloseCmd(cmd)
End Try
Return dt
End Function 
    Private Sub CloseConn(ByVal conn As SqlConnection)
'如果没有关闭,则关闭连接
If (conn.State <> ConnectionState.Closed) Then
conn.Close()
conn = Nothing
End If
End Sub
    Private Sub CloseCmd(ByVal cmd As SqlCommand)
'如果没有关闭命令,则关闭命令
If Not IsNothing(cmd) Then
cmd.Dispose() '处理
cmd = Nothing
End If
End Sub
End Class

这只是初步的实现,现在最起码能够达到代码的复用,减少了多次重复写连接数据库的代码。接下来通过机房会有更深的研究,相信到时会有更深的理解,也就能真正体现SQLHelper的作用。

SqlHelper助手的更多相关文章

  1. 新闻系统——SQLHelper助手优化

    在前面我们机房重构的时候已经用过了SQLHelper,但当时就是只会应用,知道利用SQLHelper能够帮助我们连接数据库,但对于怎样书写还是不太清楚,今天就揭开这层神秘的面纱,来真正体验如何来编写S ...

  2. 牛腩新闻发布系统(二):SQLHelper重构(二)

    导读:在上一篇博客中,介绍了简单的SQLHelper重构,即数据库链接,打开和关闭链接的优化等.现在,将介绍参数化查询和执行命令类型的改造. 一.必要性 1,参数化查询 在上篇博客中,在查询的时候,仅 ...

  3. 【ASP.NET-中级】SQLHelper数据访问公共类

    ASP.NET开发中的三层开发思想指的是UI层(界面显示层),BLL层(业务逻辑层),DAL层(数据访问层)三层,三层之间通过函数的调用来达到降低耦合,易于系统维护的目的,SQLHelper助手类的主 ...

  4. SqlParameter 基本用法

    因为通过SQL 语句的方式,有时候存在脚本注入的危险,所以在大多数情况下不建议用拼接SQL语句字符串方式,希望通过SqlParameter实现来实现对数据的操 作,针对SqlParameter的方式我 ...

  5. 简单的web三层架构系统【第二版】

    昨天写了 web三层架构的第一版,准确的说是三层架构的前期,顶多算是个二层架构,要慢慢完善. 第一版里,程序虽说能运行起来,但是有一个缺陷,就是里面的SQL语句,是使用的拼接字符进行执行.这样安全系数 ...

  6. 简单的web三层架构系统【第一版】

    SQLhelper助手类编写: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using Sys ...

  7. Datagridview列绑定数据

    属性最下面的Column项: 把每一列的字段绑定,更改显示的标题. 数据绑定代码: string sql = "select IncomeExpendTypeID , TypeName , ...

  8. 分享 Xamarin.android 关于使用SQLiteOpenHelper的小白经验

    关于使用SQLiteOpenHelper的使用,对于小白的我,百度啦相当多的大神的介绍,均未能让我这新手(零基础)成功学会,参考了http://www.cnblogs.com/yaozhenfa/p/ ...

  9. SqlHelper——数据库小助手

    SqlHelper其实就是一个类. 早就听说过"SqlHelper"这个名词,也查过相关的资料,但还是一头雾水.当真的去实践去用它时,就会发现其实它没那么神秘. 当敲第一个窗体的时 ...

随机推荐

  1. 【GStreamer开发】GStreamer基础教程01——Hello World

    目标 对于一个软件库来说,没有比在屏幕上打印出Hello World更近直观的第一印象了.因为我们是在和一个多媒体的framework打交道,所以我们准备播放一段视频来代替Hello World.不要 ...

  2. 软件素材--c/c++干掉代码的通用方法

    while(1) { sleep(200); } #endif

  3. linux软件安装习惯

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32./u ...

  4. PHP LUHN算法验证银行卡

    <?php /* 16-19 位卡号校验位采用 Luhn 校验方法计算: 第一步:把信用卡号倒序(61789372994) 第二步:取出倒序后的奇数位置上的号码, 相加等到总和s1.(eg:s1 ...

  5. 八皇后问题——列出所有的解,可推至N皇后

    <数据结构>--邓俊辉版本 读书笔记 今天学习了回溯法,有两道习题,一道N皇后,一道迷宫寻径.今天,先解决N皇后问题.由于笔者 擅长java,所以用java重现了八皇后问题. 注意是jav ...

  6. WUSTOJ 1341: Lake and Island(Java)

    题目链接:1341: Lake and Island Description 北园孩子的专属福利来啦~学校从北区宿舍到湖心岛修建了一条通道让北园的同学们可以上去一(kuang)同(xiu)玩(en)耍 ...

  7. Go语言学习笔记(10)——错误处理示例

    // 定义一个 DivideError 结构 type DivideError struct { dividee int divider int } // 实现 `error` 接口 func (de ...

  8. 去除echarts饼状图的引导线

    series: { name: "流量占比分布", type: "pie", radius: ["40%", "60%" ...

  9. Spring AOP日志实现(一)

    前置通知:获取访问的类,访问的方法,带参数和不带参数的 日志表信息描述字段: 获取访问时长:

  10. Spring Cloud Alibaba学习笔记(7) - Sentinel规则持久化及生产环境使用

    Sentinel 控制台 需要具备下面几个特性: 规则管理及推送,集中管理和推送规则.sentinel-core 提供 API 和扩展接口来接收信息.开发者需要根据自己的环境,选取一个可靠的推送规则方 ...