机房收费系统——SqlHelper

前面自己将了一大堆ADO.NET的基础知识,现在该认真的实践一下了,下面我介绍一下vb.net版机房收费系统中,SqlHelper的使用,在机房收费中,SqlHelper是自己编写的一个类,里面用到的前面讲的几个对象的简单实例。

SqlHelper简介:SqlHelper是一个基于·NETFramework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

以上是百度百科中对SqlHelper的简介。在vb.net机房个人重构版本中,SqlHelper类还涉及到了函数的重载,函数重载的知识之前在C++中接触过,这里不做过多的描述。下面让我们来看一下SqlHelper这个类是怎样起到作用的吧!

vb.net版SqlHelper源码奉献

<span style="font-family:KaiTi_GB2312;font-size:18px;">Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
 Public Class SqlHelper
    '调用配置文件
    Private ReadOnly strConnection As String = ConfigurationManager.AppSettings("Connstr").ToString
    '如果不调用配置文件,用字符串连接也行 下面所示
    ' Dim strConnection As String = "Data Source=自己的机器名;Initial Catalog=JiFang;Persist Security Info=True;User ID=sa;Password=55555"
    Public Function ExecuteNonQuery(ByRef cmdText As String, ByVal cmdType As CommandType) As Integer
        Using conn As New SqlConnection(strConnection)   '创建连接对象
            Dim cmd As SqlCommand = conn.CreateCommand() '创建命令对象
            cmd.CommandText = cmdText '获取要对数据源执行的文本命令,insert update  delete
            cmd.CommandType = cmdType '将命令对象的CommandType属性值设定为cmdtype,这里是SQL文本命令。cmdType参数在D层应经定义。
            Try
                conn.Open()  '打开连接
                Return cmd.ExecuteNonQuery '对数据库进行操作
            Catch ex As Exception '捕获异常
                Return 0
                Throw ex   '抛出异常
            End Try
        End Using
    End Function
    '对数据库进行增删改操作  有参数
    Public Function ExecuteNonQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Integer
        Using conn As New SqlConnection(strConnection) '定义连接
            Dim cmd As SqlCommand = conn.CreateCommand() '定义cmd命令
            cmd.CommandType = cmdType
            cmd.CommandText = cmdText
            cmd.Parameters.AddRange(sqlParams) '添加传进来的参数。
            Try
                conn.Open()
                Return cmd.ExecuteNonQuery()
            Catch ex As Exception
                Return 0
                Throw ex
            End Try
        End Using
    End Function
    ' 查询操作 无参数
    Public Function ExecuteDataTable(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
        Using conn As New SqlConnection(strConnection)
            Dim cmd As SqlCommand = conn.CreateCommand()
            Dim adp As SqlDataAdapter  '声明一个 DataAdapter 对象
            Dim ds As New DataSet  '声明一个Dataset对象
            cmd.CommandText = cmdText  '同上
            cmd.CommandType = cmdType '同上
            adp = New SqlDataAdapter(cmd) '引用从数据源中检索的Command对象
            Try
                conn.Open()  '打开连接
                adp.Fill(ds)   '网dataset中填充数据
                Return ds.Tables(0) '返回dataset中第一个表
            Catch ex As Exception
                Return Nothing
                Throw ex
            End Try
        End Using
    End Function

    '执行查询操作 2 有参数
    Public Function ExecuteDataTable(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable
        Using conn As New SqlConnection(strConnection)
            Dim cmd As SqlCommand = conn.CreateCommand()
            Dim adp As SqlDataAdapter
            Dim ds As New DataSet
            cmd.CommandText = cmdText
            cmd.CommandType = cmdType
            cmd.Parameters.AddRange(sqlParams)
            adp = New SqlDataAdapter(cmd)
            Try
                conn.Open()
                adp.Fill(ds)
                Return ds.Tables(0)
            Catch ex As Exception
                Return Nothing
                Throw ex
            End Try
        End Using
    End Function
End Class
</span>

拿查询充值记录来说吧,下面是充值记录D层的代码。

Imports System.Data
Imports System.Data.SqlClient
Public Class QueryRechargeInfo1
    Public Function QueryCharge(model As JFModel.QueryRechargeInfo) As IList(Of JFModel.QueryRechargeInfo)
        Dim sqlparamas As SqlParameter() = {New SqlParameter("@CardNo", model.CardNO)}
        Dim cmdtxet As String = "select * from Recharge_Info where [email protected]" '查询数据库中的信息
        Dim cmdtype As CommandType = New CommandType()
        cmdtype = CommandType.Text
        Dim helper As New SqlHelper
        Dim dt As New DataTable   '定义查询到的表集
        Dim myList As List(Of JFModel.QueryRechargeInfo)    '保存转换后的泛型集合
        dt = helper.ExecuteDataTable(cmdtxet, cmdtype, sqlparamas)   '执行查询
        '将dt转换为泛型集合
        myList = DataSetToList.converToList(Of JFModel.QueryRechargeInfo)(dt)
        Return myList    '返回一个实体
    End Function
End Class

以上便是我对SqlHelper的了解与应用,想想之前看见SqlHelper就害怕,里面的代码什么根本不知道为什么这么写,现在有了前面那几篇文章做铺垫,对SqlHelper,对ADO.NET总算有点了解了。

时间: 2024-11-13 08:03:15

机房收费系统——SqlHelper的相关文章

VB.NET版机房收费系统---SqlHelper

SqlHelper,最早接触这个词儿的时候,好像是13年的暑假,那个夏天来的比往年来的稍晚一些,呵呵,sqlhelper,翻译成中文就是数据库助手,帮手.百度百科这样对她进行阐述: SqlHelper是一个基于.NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化我们重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等.SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,

VB.NET机房收费系统SQLHelper

一直在用SQLHelper,但是直到现在才稍稍明白一点数据连接类的妙用 真正的体现了代码重复利用. SQL 语句的 更新 插入 查找 删除 包括有参数的.无参数的更新 插入 查找 删除 都包括了 下面是代码的详细解释,现在先看看明白,等到以后写的时候就方便多了. "` Imports System.Data Imports System.Data.SqlClient Imports System.Configuration '必须要在管理器中添加引用 "' "' SqlHel

【VB.NET 机房收费系统】——对SqlHelper别说“不”

 简介 SqlHelper是一个基于·NETFramework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复 的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等.SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便. ----官方正解 一长串的文字,我注意到的是"很方便"这三个字,那是有多方便呢???还不会用呢,也没发现又方便呀,单单就看S

机房收费系统个人重构关于SQLHelper

近期在敲机房,对于SQLHelper也是心里有些怵,由于原来没用过,可是看了一些博客和资料后发现,假设不用这个类,会大大添加代码量,并且,事实上它并不新,它是一个有多个关于数据库增删改查操作的语句函数的类,使用这个类能够方便D层调用,对数据库的操作,我们无非就是增删改查,而函数就是有无參数,有无返回值,SQLHelper是个新词,只是我们却一直在用,仅仅是我们不这么叫,之所以叫SQLHelper,理所当然它是D层操作数据的助手, 在SQLHelper类中实现的方法包含: ExecuteNonQu

【机房收费系统】多么痛的领悟

这次机房收费系统,是所有的项目中,自己完成的最不满意的了. 时间之长,效率之慢.一开始,就感觉无从下手,但总会相信自己能慢慢的进入状态.终于有机会自己练练手了,也自认为之前自己设计模式学的还不错,也终于有机会能自己想想设计模式了.该是一件多么帅的事.拖了这么久,到现在只用上了外观 抽象工厂 模板 个人版就这么结束了.真心不想再拖一天了. 话说,并不觉得自己敲代码会比别人差多少.一开始敲完三层,又开始画图.还是一头的雾水.设计数据库,终于有了一点自己的想法也重温了之前学习的数据库原理,还是比较欣慰

机房收费系统合作——再看数据库设计

机房合作我负责了最简单的D层,接口层,工厂层.反正D层是我来写,于是数据库索性也就顺便设计了.已经是第三次敲机房收费系统了,每次都是相隔半年左右吧.需求搞得透透的了,数据库也就好设计了.基本跟第二次没什么大的区别,就是把Student表和Card表分开了. 重构的时候,我的数据库几乎什么都用到了:事务,存储过程,触发器,视图,联合查询等等.所以,这次设计数据库还是SO Easy的..并且,为了让婵婵和牛迁迁师哥写的方便,我把组合查询都写成了存储过程!!!!费了一番功夫,但是D层简单了不少.还记得

总结个人版机房收费系统

个人版机房收费系统是在学习完vb.net语言和三层架构思想后的第一个系统,我们要从C/S向B/S进发过程中一个铺路石,在没开始C/S之前,虽然没有什么直接的联系.但学习就是有很多共同的地方,在这个过程中有很多知识是在巩固,有很多东西新接触或者实践.我最大的感受就是,走过了这个过程就一定会带走些什么. 个人版机房收费和第一版系统有很多相同的地方,这些相同的地方就在进行重构的过程中,帮助我们i+1. 比如: 1.开发语言:虽然一个用的是vb一个是vb.net.但不得不说有了第一版的经验,重构版用起来

.NET分层登陆——机房收费系统再总结

去年的时候,我写过一篇机房收费系统登陆的总结文章,那是站在VB的基础上,直接查询数据库实现的登陆.是很初期的知识.如果想了解详情,请看VB查询数据库之登陆窗体--机房收费系统总结(一). 今天,我要换一个角度,换一个方式,来实现登陆.首先,我选择的开发工具是VB.NET,数据库是SQLSever2008.其次,我用的是三层的思想,把界面,逻辑和数据都分开,减少相互之间的影响.在次,界面层尽量简洁,所有的算法和业务逻辑都写到逻辑层,同时使用了接口和工厂模式以及外观模式,减少了相互之间的依赖,降低了

【机房收费系统】磕磕绊绊中总结

每一个庞然大物来之前,总是心里不自觉的退缩一下.这一次,把我自己当成了奥特曼. 命名规范文档 最先看的是这个.有了标准后,才能见其名 知其意. 数据库设计 敲完三层登陆小demo,这一次重新着手,从ER图开始设计数据库.又翻了翻自考的书,把机房收费系统中可能抽出来的实体画出来 又开始一个个找联系.转换为逻辑结构.可能根据业务的不同,表和主键会稍微有些变化.比如,是否允许一个学生有多张卡,退卡之后原来的卡号还能否再注册,退卡是是否要删除记录等修改或添加一些辅助标记字段,也涉及到一些其他问题,例如添