SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手。百度百科这样对她进行阐述:

SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包括数据库操作方法。SqlHelper用于简化我们反复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后一般是仅仅须要给方法传入一些參数如数据库连接字符串,SQL參数等,就能够訪问数据库了,非常方便!

但是,好好的,我们为什么要用SqlHlper?我想百度百科上的解释已经非常清楚非常明确了,SqlHlper是在D层中的代码抽象出来的,那D层中什么样的代码才干抽象出来?原来啊,就是把那些对数据库进行增删改查的操作,存储过程及程序集等中同样的代码抽象出来!

在 SqlHelper 类中实现的方法包含:

      ExecuteNonQuery。此方法用于运行(有參数或无參数的)不返回不论什么行或值的命令。这些命令通经常使用于运行数据库(增\删\改)更新,但也可用于返回存储过程的输出參数。

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

      ExecuteDataset。此方法返回 DataSet 对象,该对象包括由某一命令返回的结果集。

以下是SqlHelper的详细实现:

Imports System.Data.SqlClient
Imports System.Configuration
Public Class SqlHelper
'定义连接字符串
Dim strConnection As String = System.Configuration.ConfigurationSettings.AppSettings("strConnection")
'定义连接
Dim conn As SqlConnection
'定义命令
Dim cmd As SqlCommand
'初始化连接对象
Public Sub New()
conn = New SqlConnection(strConnection)
End Sub
'/// <summary>
'/// depiction:<有參数的非查询的操作>
'/// </summary>
'/// <param name="<strText>"><增删改语句或者存储过程></param>
'/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
'/// <param name="<sqlParameter>"><參数数组></param>
'/// <returns>
'/// <返回布尔值>
'/// </returns> Public Function ExecuteNonQuery(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Boolean
Dim cmd As New SqlCommand '定义命令
cmd.CommandText = strText 'sql语句或存储过程名字
cmd.CommandType = cmdType '命令类型是StoredProcedure时,调用存储过程,一般为CommandText
cmd.Connection = conn '连接数据库 cmd.Parameters.AddRange(sqlParameter) '传參
Dim flag As Boolean = False '定义返回值 Try
conn.Open() '打开数据库连接
flag = cmd.ExecuteNonQuery
cmd.Parameters.Clear()
Catch ex As Exception
flag = False
Finally
Call CloseConnection(conn) '关闭数据库连接
Call CloseCmd(cmd)
End Try
Return flag
End Function '/// <summary>
'/// depiction:<获取一个带參数的查询结果阅读器>
'/// </summary>
'/// <param name="<strText>"><增删改语句或者存储过程></param>
'/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
'/// <param name="<sqlParameter>"><參数数组></param>
'/// <returns>
'/// <返回布尔值>
'/// </returns>
Public Function ExecuteReader(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Boolean
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
cmd.CommandText = strText 'sql语句或存储过程名字
cmd.CommandType = cmdType '命令类型是StoredProcdeure时,调用存储过程,一般为CommandText
cmd.Connection = conn cmd.Parameters.AddRange(sqlParameter) '传參
Dim flag As Boolean = False '定义返回值 Try
conn.Open()
reader = cmd.ExecuteReader
flag = reader.Read()
cmd.Parameters.Clear()
Catch ex As Exception
flag = False
Finally
Call CloseConnection(conn)
Call CloseCmd(cmd)
End Try
Return flag
End Function '/// <summary>
'/// depiction:<获取一个带參数的查询DataTable结果集>
'/// </summary>
'/// <param name="<strText>"><增删改语句或者存储过程></param>
'/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
'/// <param name="<sqlParameter>"><參数数组></param>
'/// <returns>
'/// <返回DataTable>
'/// </returns>
Public Function ExecuteReaderTable(ByVal strText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As DataTable
Dim cmd As New SqlCommand '定义命令
Dim dataAdapter As New SqlDataAdapter '定义一个适配器对象
Dim dst As New DataSet
Dim dt As New DataTable cmd.CommandText = strText 'sql语句或存储过程名字
cmd.CommandType = cmdType '命令类型是StoredProcdeure时,调用存储过程,一般为CommandText
cmd.Connection = conn '连接数据库 cmd.Parameters.AddRange(sqlParameter) '传參
Try
conn.Open()
dataAdapter.SelectCommand = cmd
dataAdapter.Fill(dst)
dt = dst.Tables(0)
Catch ex As Exception
Call CloseConnection(conn)
Call CloseCmd(cmd)
End Try
Return dt
End Function
'/// <summary>
'/// depiction:<获取上机人数>
'/// </summary>
'/// <param name="<strText>"><增删改语句或者存储过程></param>
'/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
'/// <param name="<sqlParameter>"><參数数组></param>
'/// <returns>
'/// <返回整型>
'/// </returns>
Public Function ExecuteScalar(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Integer
Dim cmd As New SqlCommand
Dim count As Integer cmd.CommandText = cmdText
cmd.CommandType = cmdType
cmd.Connection = conn cmd.Parameters.AddRange(sqlParameter)
Try
conn.Open()
count = cmd.ExecuteScalar
Catch ex As Exception
Throw New Exception(ex.Message.ToString())
Finally
Call CloseCounection(conn)
Call CloseCmd(cmd)
End Try
Return count
End Function
'/// <summary>
'/// depiction:<算取金额>
'/// </summary>
'/// <param name="<strText>"><增删改语句或者存储过程></param>
'/// <param name="<cmdType>"><命令类型文本或者存储过程></param>
'/// <param name="<sqlParameter>"><參数数组></param>
'/// <returns>
'/// <返回integer>
'/// </returns>
Public Function ExecuteScalarCash(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParameter As SqlParameter()) As Decimal
Dim cmd As New SqlCommand
Dim cash As Decimal cmd.CommandText = cmdText
cmd.CommandType = cmdType
cmd.Connection = conn
cmd.Parameters.AddRange(sqlParameter) Dim i As String
Try
conn.Open()
i = cmd.ExecuteScalar.ToString() If i = "" Then
cash = 0.0
Else
cash = i
End If Catch ex As Exception
Throw New Exception(ex.Message.ToString())
Finally
Call CloseConnection(conn)
Call CloseCmd(cmd) End Try
Return cash
End Function Public Sub CloseConnection(ByVal conn As SqlConnection)
If Not IsNothing(conn.State <> ConnectionState.Closed) Then
conn.Close() '关闭连接
conn = Nothing
End If
End Sub Private Sub CloseCmd(cmd As SqlCommand)
If Not IsNothing(cmd) Then '推断是否为空
cmd.Dispose()
cmd = Nothing
End If
End Sub End Class

SqlHelper封装成一个类,为开发者选择訪问数据库的方式提供了灵活性,每种方法的重载都支持不同的方法參数,因此开发者能够确定传递连接、事务和參数信息的方式。像是打包,封装的思想完美诠释,抽离出同样的内容,使代码得到复用!

VB.NET版机房收费系统---SqlHelper的更多相关文章

  1. VB.NET版机房收费系统---导出Excel表格

    datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...

  2. VB.NET版机房收费系统---异常处理

    异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...

  3. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  4. VB.NET版机房收费系统---七仙女之系统登录

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  5. VB.NET版机房收费系统---报表

    报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...

  6. VB.NET版机房收费系统---外观层如何写

    外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...

  7. VB.NET版机房收费系统---组合查询

    查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...

  8. VB.NET版机房收费系统---外观层怎样写

    外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...

  9. VB.NET版机房收费系统—数据库设计

    之前第一遍机房收费的时候,用的数据库是别人的.认知也仅仅能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化.以下是我设计 ...

随机推荐

  1. Android 三星手机不能调起应用市场

    Uri uri; if (hasAnyMarketInstalled(getContext())) { uri = Uri.parse("market://details?id=" ...

  2. 移动端下网页border:1px显示

    解决这个问题之前首先要了解移动前端开发viewport的概念,自己写了一篇很粗糙viewport详解的文章对它有了一个很简单的理解.这里推荐一篇很详细的博文<<移动前端开发之viewpor ...

  3. spoj TSUM - Triple Sums fft+容斥

    题目链接 首先忽略 i < j < k这个条件.那么我们构造多项式$$A(x) = \sum_{1现在我们考虑容斥:1. $ (\sum_{}x)^3 = \sum_{}x^3 + 3\s ...

  4. Java引用数据类型

    值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值.引用传递:也称为传地址.方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应 ...

  5. VS Code调试.NET Core

    VS Code调试.NET Core应用遇到的坑 为什么会有”坑“ 博客园里有好多介绍怎么使用VS Code以及调试.NET Core的文章,但是都是基于直接构建Asp.Net Core Mvc单项目 ...

  6. 《转》JAVA中PriorityQueue优先级队列使用方法

    该文章转自:http://blog.csdn.net/hiphopmattshi/article/details/7334487 优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最 ...

  7. 7.使用ProcessBuilder执行本地命令(转)

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IO ...

  8. 关于iOS7越狱的整理

    目前越狱非常的不稳定,已经白苹果第三次了.中途遇见了不少问题,去各大论坛找了下解决办法,算是搬运工. iOS7越狱过程中打开手机上的“evasi0n7”闪退,怎么办?1. 请先尝试卸载手机“evasi ...

  9. C++ *max_element函数找最大元素 *min_element函数找最小元素 STL算法(转)

    http://blog.sina.com.cn/s/blog_6f3a860501019z1f.html #include<iostream> #include<algorithm& ...

  10. HDU 5024 Wang Xifeng&#39;s Little Plot 搜索

    pid=5024">点击打开链接 Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others)    Memory ...