vb.net机房收费系统——类的理解(sqlhelper)
类,什么是类?让我们看看维基百科的定义
在现实世界中,经常有属于同一个类的对象。例如,某辆自行车只是世界上很多自行车中的一辆。在面向对象软件中,也有很多共享相同特征的不同的对象:矩形、雇用记录、视频剪辑等。可以利用这些对象的相同特征为它们建立一个蓝图。对象的软件蓝图称为类。
类是定义同一类所有对象的变量和方法的蓝图或原型。例如,可以建立一个定义包含当前档位等实例变量的自行车类。这个类也定义和提供了实例方法(变档、刹车)的实现。
实例变量的值由类的每个实例提供。因此,当创建自行车类以后,必须在使用之前对它进行实例化。当创建类的实例时, 就建立了这种类型的一个对象,然后系统为类定义的实例变量 分配内存。然后可以调用对象的实例方法实现一些功能。相同类的实例共享相同的实例方法。
除了实例变量和方法,类也可以定义类变量和类方法。可以从类的实例中或者直接从类中访问类变量和方法。类方法只能操 作类变量 - 不必访问实例变量或实例方法。
系统在第一次在程序中遇到一个类时为这个类建立它的所有类变量的拷贝 - 这个类的所有实例共享它的类变量。
在我们这片博文中,我们就“SQLHelper”类讲述我理解的类!
首先,类的定义总有这么一句“软件蓝图称为类,SQLHelper是一个什么样的蓝图呢,大面上说,它将与数据库频繁交涉的“连接”,“执行”封装在了里面,这么说他是数据操作中“连接”,“执行”的蓝图,规划好怎么做就好!类,的好处必然有复用性,就像现在的工业时代一样,我们画好一个汽车的蓝图,汽车厂就能源源不断地给我们生产这种汽车,方便我们出行!
当然,还有一个好处是:让逻辑简单,将功能聚合起来,我们对各个方法的逻辑就变成了各个类之间的逻辑,还是汽车举个例子,如果我们每个人都造汽车,且没有标准,我们的路要修多宽?有人说“尽量宽!”,但是这是浪费,如果车子多了起来,就是混乱,类如同标准,让逻辑简单,车的大小吗,速度,油耗都有标准,让我们的路,更经济合理!
类多了涉及到分层!这是个相对的概念!什么难度的逻辑对应我们应该分几层,逻辑的多少大小,让我们在设计类,规划类的时候又用到了模式!但是模式也是个相对的概念,100%用模式解决问题,有时候就会适得其反!就比如很简单的“hello word!”我们要怎么分层,怎么运用模式都不如直接输出来的好!
面向对象,我们刚刚开始这段神奇的旅程!以后的生活会更加精彩!
源码奉献:
Imports System.Data.SqlClient
Imports System.Configuration '要在管理器中添加引用 '/*************************************************
'作者:许恕
'小组:
'说明:用户对数据库操作帮助类
'创建日期:2013.2.24——14:00
'版本号:v1.0.0
'*********************************************/'类名:SQLHelper
'意义:用户对数据库操作帮助类
'成员:
'UserId '用户id
'UserPassword '用户密码
'UserName '用户姓名
'UserLevel '用户等级
'UserAgent '用户创始人
Public Class SQLHelper'获取配置文件中的连接字符串Private ReadOnly strSQLConnection As String = ConfigurationManager.AppSettings("strSQLConnection")'定义连接Dim cnnSQL As SqlConnection'定义cmd命令Dim cmdSQL As SqlCommand' /// <summary>' /// depiction:<该方法是sqlhelper类的初始化>' /// </summary>Private Sub New()cnnSQL = New SqlConnection(strSQLConnection)End Sub'' /// <summary>'' /// depiction:<改方法是获取数据库的连接>'' /// </summary>'Private Sub openSQLConnection()' '判断数据库连接对象状态是否为断开,如果断开就打开' If cnnSQL.State = ConnectionState.Closed Then' cnnSQL.Open()' End If'End Sub' /// <summary>' /// depiction:<改方法是关闭数据库的连接>' /// </summary>Private Sub CloseSQLConnection()'判断数据库连接对象状态是否为断开,如果不断开就断开If cnnSQL.State <> ConnectionState.Closed ThencnnSQL.Close()End IfEnd Sub' /// <summary>' /// depiction:<改方法是关闭数据库命令>' /// </summary>Private Sub CloseSQLCommand()If Not IsNothing(cmdSQL) Then '如果cmd命令存在 cmdSQL.Dispose() '销毁 cmdSQL = NothingEnd IfEnd Sub'/// <summary> ''///执行增删改三个操作,(有参)返回值为boolean类型,确认是否执行成功 '/// </summary> ' /// <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> '' ///<param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param> ' /// <param name="sqlParams">参数数组,无法确认有多少参数</param>' /// <returns>' ///<返回布尔类型,成功为true,否则为false>' /// </returns>Public Function ExecuteAddDelUpdate(ByVal strSql As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Boolean'用传进的参数填充本类自己的cmd对象cmdSQL.Parameters.AddRange(sqlParams) '参数传入cmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQL '设置连接cmdSQL.CommandText = strSql '设置查询的语句TrycnnSQL.Open() '打开连接 Return cmdSQL.ExecuteNonQuery() '执行增删改操作 cmdSQL.Parameters.Clear() '清除参数 Catch ex As ExceptionReturn False '如果出错,返回false FinallyCall CloseSQLConnection()Call CloseSQLCommand()End TryEnd Function'/// <summary> ''///执行增删改三个操作,(无参)返回值为boolean类型,确认是否执行成功 '/// </summary> ' /// <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> '' ///<param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param> ' /// <returns>' ///<返回布尔类型,成功为true,否则为false>' /// </returns>Public Function ExecuteAddDelUpdate(ByVal strSql As String, ByVal cmdType As CommandType) As Boolean'用传进的参数填充本类自己的cmd对象cmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQL '将参数传入cmdSQL.CommandText = strSql '设置查询的语句TrycnnSQL.Open() '打开连接 Return cmdSQL.ExecuteNonQuery() '执行增删改操作 Catch ex As ExceptionReturn False '如果出错,返回false FinallyCall CloseSQLConnection()Call CloseSQLCommand()End TryEnd Function'/// <summary> ''///执行查询操作,(有参)返回值为datatable类型 '/// </summary> ' /// <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> '' ///<param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param> ' /// <param name="sqlParams">参数数组,无法确认有多少参数</param>' /// <returns>' ///<返回表>' /// </returns>Public Function ExecuteSelect(ByVal strSql As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTableDim sqlAdapter As SqlDataAdapterDim dtSQL As New DataTableDim dsSQL As New DataSet'用传进的参数填充本类自己的cmd对象 cmdSQL.CommandText = strSqlcmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQLcmdSQL.Parameters.AddRange(sqlParams) '参数添加 sqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapter TrysqlAdapter.Fill(dsSQL) '用adapter将dataSet填充 dtSQL = dsSQL.Tables(0) 'datatable为dataSet的第一个表 cmdSQL.Parameters.Clear() '清除参数 Catch ex As ExceptionMsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")Finally '最后一定要销毁cmd Call CloseSQLCommand()End TryReturn dtSQLEnd Function'/// <summary> ''///执行查询操作,(无参)返回值为datatable类型 '/// </summary> ' /// <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> '' ///<param name="cmdType">判断Sql语句的类型,一般都不是存储过程</param> ' /// <returns>' ///<返回表>' /// </returns>Public Function ExecuteSelect(ByVal strSql As String, ByVal cmdType As CommandType) As DataTableDim sqlAdapter As SqlDataAdapterDim dtSQL As New DataTableDim dsSQL As New DataSet'用传进的参数填充本类自己的cmd对象 cmdSQL.CommandText = strSqlcmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQLsqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapter TrysqlAdapter.Fill(dsSQL) '用adapter将dataSet填充 dtSQL = dsSQL.Tables(0) 'datatable为dataSet的第一个表 Catch ex As ExceptionMsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")Finally '最后一定要销毁cmd Call CloseSQLCommand()End TryReturn dtSQLEnd FunctionEnd Class
vb.net机房收费系统——类的理解(sqlhelper)相关推荐
- 重构机房VB.NET机房收费系统个人重构版你都学会了什么(之一)
每日一贴,今天的内容关键字为重构机房 在VB.NET机房收费系统个人重构版时你都学会了什么?在开始第二遍的机房收费系统个人重构时,我发明不知不觉竟接触了很多很多之前不晓得的货色,也学到了很多新知识.下 ...
- UML学习:机房收费系统-类图
前言 机房收费系统类图 类图分析 学生类 一般用户类 操作员类 管理员类 附加类 关系总图 总结 前言 上回说到一个软件系统的用例图在开发过程中起到的作用,并且通过机房收费系统对用例图进行了阐述,这次 ...
- 可行性研究报告——【VB版机房收费系统】
1引言 1.1编写目的 在电子信息高速发展的今天,计算机已经是大家生活中必不可少的工具了.人工管理信息的时代已经一去不复返.计算机管理收费系统早已成为了现实,它具有管理方便.检索迅速.查找快速.可靠性 ...
- vb.net机房收费系统之组合查询
我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...
- vb.net机房收费系统重构——存储过程的使用
在敲写七层登陆过程中,接触了存储过程的概念,但当时还没使用.在正式的重构过程中,一点点添加,将存储过程也添加到了重构中.才正式了解了存储过程. 首先 [存储过程的概念] 存储过程Procedure是一 ...
- VB版机房收费系统流程图--00
前言:在完成学生信息管理的时候没有化流程图因为,学生有源码.但是机房收费系统几乎没有源码.有都是零零散散的,不是一个人写的所以不连贯.思路已不是很一致,功能一样但是人的思想是不一样的.所以实现方式上是 ...
- vb版机房收费系统“经典代码总结”--01
前言:说到经典代码,每个人对经典代码的理解和应用都多多少少有点不同.因为每个人的重点不一样,虽然最后实现的功能是一样的.实现的过程和思路是每个人都不一样的,方法也有区别.所以我分享一下我的经典代码,我 ...
- 【VB】机房收费系统(结账)
结账,我觉得他的作用就是能让管理员能对这一天每一位操作员的收支有一个一目了然的了解. 汇总的小知识: 售卡张数=购卡选项卡的记录总数 退卡张数=退卡选项卡的记录总数 ...
- VB版机房收费系统”登录“--02
前言:所有软件一开始第一个功能都是登录,所以登录可以说是用户体验度非常重要的一个环节.假如:你的登录页面做的非常的不好看,而且用户登录的时间还长.这个会大大的影响到用户后面的功能体验,所以登录功能担任 ...
最新文章
- C语言将数组中的值逆序存放
- LightOJ1234 Harmonic Number 调和级数求和
- Fabric 链码Chaincode 的安装、初始化、调用、升级
- 风车网上线,图片分享网站大潮将至
- RTP传输H264时的sps和pps的获取
- BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置
- 【spark】示例:连接操作
- 关于Debug.exe
- 几点减几点怎么列算式_结婚邀请函怎么写样板 结婚邀请函有哪几点是必写的...
- 关于在VMware上装lFEDORA系统
- LaTeX 在线编辑器(LaTeX online editors)
- 负二项分布(一种离散分布)
- 幼儿园不同空间翻新设计注意事项
- Eagle设计师必备利器管理工具
- 计算机网络ping用法,Ping命令及用法详解
- 启动类上的@MapperScan注解与yml配置中mybatis.mapper-locations和mybatis.type-aliases-package的作用
- 基于Axure的火车售票系统——高保真原型图
- Consul Consensus Protocol
- mysql优化手段——潭州学院
- Echarts双Y轴柱状图
热门文章
- [问题]mpu9250+bmp280数据读取
- Windows编程画太极图
- 一图了解券商IT战略咨询方法论
- spring @Autowired用法
- redis 解决key是乱码问题,并清理
- OpenStack ironic裸金属部署(裸金属作为独立服务)
- Smalltalk for Everyone Else
- 汉子字符转换成大写英文字母开头。。
- 解决Eclipse打开某个workspace报错:The project description file (.project) for (项目名)
- FileZilla Server 中文版