之前敲完七层登陆之后,我天真的认为Sqlhelper就只是由一个function组成!!后来看到大家的博客,原来是由好几个function组成的,每个function都对应特定的数据库增删改查!现在想想真是三千世界一口井,我看世界大如饼!自己的浏览量还要增强。。

在整个机房收费系统中,具体操作数据库的function大概可分为五种,它们分别是执行含参和无参的查询操作,执行含参和无参的增删改操作,以及关闭数据库链接的操作这五种。接下来我们依次讲解一下这五种操作以及看看它们的生成代码。

含参和无参的查询

刚开始的时候,我转不过弯儿来,不理解含参与无参有什么区别,但随着自己敲代码的数量增多,对于机房收费的理解加深,原来是这样的。。当敲登陆的时候,只有输入用户名和密码后,才能查询数据库中的用户表,看看是否与输入的一致!由此可知要输入的用户名和密码就可以认定为参数,只有当参数与数据库中数据一致时,才能登陆成功;当我们查询正在值班教师的时候,我们不用在U层输入数据,直接点击命令按钮就可以显示出我们要查询的数据,这就是无参啦。。

在具体的代码中,它们的区别就是一个含参,一个无参(好无语的解释)在无参中,function的声明为:

Public Shared Function ExecSelectNO(ByVal sql As String, ByVal cmdType As CommandType) As DataTable不包含<span style="font-family: Arial, Helvetica, sans-serif;">SqlParameter</span>
'********************************
'作者:郭贤达
'小组:个人
'说明:数据库连接与关闭的具体化,将数据传给DAL层
'日期:2015.5.16
'版本号:V1.00
'********************************Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data
Imports System.ReflectionPublic Class sqlHelper'shared是指定与某一类或结构的所有实例关联的一个或多个所声明的编程元素''定义全局变量,获取数据库的连接字符串Private Shared ConnectionString As String = ConfigurationManager.AppSettings("ConnString")''建立数据库连接Shared conn As SqlConnection = New SqlConnection(ConnectionString)''定义命令变量.sqlcommand表示要对sqlserver数据库执行的一个T-SQL语句或存储过程Shared cmd As SqlCommand''' <summary>''' 有参查询''' </summary>''' <param name="sql">执行增删改查SQL语句或存储过程</param>''' <param name="cmdType">命令类型文本或存储过程</param>''' <param name="sqlparams">参数数组</param>''' <returns></returns>''' <remarks></remarks>Public Shared Function ExecSelect(ByVal sql As String, ByVal cmdType As CommandType, ByVal sqlparams As SqlParameter()) As DataTable''定义数据适配器.用于填充dataset和更新sqlserver数据库的一组数据命令和一个数据库连接,不能被继承Dim adapter As SqlDataAdapter''定义并实例化数据缓冲对象,即从数据库传入的对象Dim adataset As New DataSet'在conn上面执行实例化命令变量,并执行语句cmdTypecmd = New SqlCommand(sql, conn)''commandtype表示获取或设置一个值,该值指示如何解释commandText的属性cmd.CommandType = cmdType''addrange表示添加parameter值的数组cmd.Parameters.AddRange(sqlparams)''将结果绑定到数据适配器变量adaptor上面adapter = New SqlDataAdapter(cmd)Try''如果数据库连接状态为关闭则将其打开If conn.State = ConnectionState.Closed Thenconn.Open()End If''向adaptor对象中填充查询的数据adapter.Fill(adataset)''清除参数cmd.Parameters.Clear()Catch ex As Exception''错误处理的程序,出错则提示MsgBox(ex.Message, , "数据库操作")Finally''如果连接状态为打开则将其关闭,释放内存If conn.State = ConnectionState.Open Thenconn.Close()End IfEnd Try''tables获取包含在dataset中的表的集合Return adataset.Tables(0)End Function

含参和无参的增删改

有了上面的基础,这个就更容易理解了。用户和学生注册都会用到含参的增删改,至于无参的增删改,我还没有遇到哎,遇到的童鞋冒个泡!!现在看看具体的代码

''' <summary>''' 有参增删改''' </summary>''' <param name="sql">执行增删改查SQL语句或存储过程</param>''' <param name="cmdType">命令类型文本或存储过程</param>''' <param name="sqlparams">参数数组</param>''' <returns></returns>''' <remarks></remarks>Public Shared Function ExecAddDelUpdate(ByVal sql As String, ByVal cmdType As CommandType, ByVal sqlparams As SqlParameter()) As Boolean''定义变量,用来存放执行的结果Dim result As Integercmd = New SqlCommand(sql, conn)cmd.CommandType = cmdTypecmd.Parameters.AddRange(sqlparams)Try''如果数据库连接状态为关闭则将其打开If conn.State = ConnectionState.Closed Thenconn.Open()End If''对连接执行T_SQL,并返回受影响的行,即执行增删改操作result = cmd.ExecuteNonQuery()''清除参数cmd.Parameters.Clear()Catch ex As Exception''错误处理的程序,出错则提示MsgBox(ex.Message, , "数据库操作")Finally''如果连接状态为打开则将其关闭,释放内存If conn.State = ConnectionState.Open Thenconn.Close()End IfEnd Try''返回受影响的行Return resultEnd Function

关闭数据库链接

这个不多做解释

''' <summary>''' 关闭连接''' </summary>''' <param name="conn">需要关闭的连接</param>''' <remarks></remarks>Public Shared Sub CloseConn(ByVal conn As SqlConnection)If conn.State = ConnectionState.Open Thenconn.Close()''不指向原对象conn = NothingEnd IfEnd Sub

总结

敲完SqlHelper后,我想大家都会有一个小小的发现,就是查询和增删改的function类型是不一样的。查询的类型为DataTable,增删改的类型为Boolean。我们为什么这样设计?!如果没有发现的同学可以想一想。。这些弄完之后,接下来就是组合查询和报表啦,会用到很多东西,如存储过程、触发器、泛型集合等,继续努力吧,下一篇博客我也不知道些什么。。

【机房收费个人版】SqlHelper相关推荐

  1. 【机房收费个人版】七层登陆

    敲完七层登陆之后,让我认识到所谓的七层就是在三层的基础上添加了两个模式和一个SqlHelper.外观模式完美的体现了依赖倒转原则和迪米特法则的思想,降低了耦合性:反射+配置文件+抽象工厂模式,用于实现 ...

  2. 【机房收费个人版】DataTable 与泛型集合的较量

    将近三周的时间,我学到了很多知识,让我受益匪浅!也通过这三周的积累和整理,现在是时候写博客分享我的所知所得了..下面主要写DataTable.泛型集合以及它们之间的比较.. DataTable     ...

  3. 【机房收费个人版】触发器与存储过程

    这篇博客主要写的是触发器和存储过程的应用.实例.优点.不同及弊端,最后通过总的分析,总结出谁更胜一筹.. 触发器 定义      触发器是一种机制,用来强制业务规则和数据完整性,当指定表中的数据发生变 ...

  4. 【机房收费系统个人版】三层登陆

    机房收费个人版这个项目,很早就开始进行了,但是直到现在还没有完成..原因有两方面,首先是自身的个人管理不到位.做事拖拖拉拉,没有很好的节制自身的不良习惯:其次是思想价值观极端化.世界上没有谁能将所有事 ...

  5. 个人版机房收费——数据库设计

    在做机房收费系统个人版的时候又一次的遇到了数据库设计方面的内容,还记得第一次机房收费系统的时候,数据库的设计基本上是边敲边设计的,搞得特别的乱,也不符合编程的规范.既然我们现在已经是专业人士了,那么就 ...

  6. 机房收费系统.Net个人版总结

    机房收费系统.Net版到前两天为止才算是彻底完工了.从寒假开始的初步文档+图设计,以及之后的代码实现,到三月中旬开始的文档规范.图规范.代码规范.这个生命周期真是一个长啊.给自己总结了一下:本次机房收 ...

  7. 重构机房VB.NET机房收费系统个人重构版你都学会了什么(之一)

    每日一贴,今天的内容关键字为重构机房 在VB.NET机房收费系统个人重构版时你都学会了什么?在开始第二遍的机房收费系统个人重构时,我发明不知不觉竟接触了很多很多之前不晓得的货色,也学到了很多新知识.下 ...

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

    这次机房收费系统,是全部的项目中,自己完毕的最不惬意的了. 时间之长.效率之慢.一開始.就感觉无从下手,但总会相信自己能慢慢的进入状态.最终有机会自己练练手了.也自觉得之前自己设计模式学的还不错.也最 ...

  9. vb.net机房收费系统重构——存储过程的使用

    在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一 ...

最新文章

  1. python 缺失值处理(Imputation)
  2. 玩转ECS第6讲 | 弹性计算Region化部署和跨可用区容灾介绍
  3. zoeDylan.js框架-数据底层
  4. ROS笔记(15) Xacro
  5. 计算机开机coms错误,电脑开机提示“CMOS checksum error-Defaults loaded”怎么办?
  6. JS:ES6-11 数值扩展与对象扩展
  7. 递归 解决汉诺塔问题(栈应用)
  8. 国都企信通短信平台发送手机短信的python脚本一例
  9. Android筑基——深入理解 LayoutInflater.inflate() 方法
  10. netbsd apache php mysql,NetBSD配置aria2的web前端YAAW笔记
  11. 高数__已知2个平面方程, 求这2个平面的夹角
  12. 2017年12月19-20日 阿里云 飞天/智能 云栖大会-北京峰会 会议笔记
  13. OBIEE的迁移部署
  14. sdnu oj 1357.Text Reverse 字符串
  15. tecplot有效数字位数
  16. python语法详解_关于python:NLTK中解析的英语语法
  17. 如何学习stm32,怎么学习stm32,不是仅仅看教程,照着写复制代码
  18. MySQL定时任务(每天0点自动执行)
  19. C语言实训职工工资系统模块,C语言实训报告模板-doc.doc
  20. 春招已至,大四学生如何撰写一份面试官愿意看的简历

热门文章

  1. 【Vissim】做一次完整的交通仿真——1.基本认识
  2. 如果改计算机mac,怎么修改计算机mac_修改计算机mac
  3. The Things Network LoRaWAN Stack V3 学习笔记 1.2 源码编译
  4. evolution邮箱_b2evolution简介
  5. Mybatis 映射文件
  6. MQTT Mosquitto安装和使用
  7. win10微软图标点击无反应_win10任务栏开始菜单等系统图标点击无反应的解决方法...
  8. access自动自动累计余额_怎样计算Access完成累计余额
  9. 大前端求人不如求己系列工具:如何PSD文件自动标注切图和真机预览
  10. 计算机相关专业的兼职大总结