机房收费系统重构之SQLhelper的理解
2016-03-13 19:47
405 查看
在敲完登录以后,随着越来越来功能实现,发现有时候在一个窗体中就有可能访问3`4张表,这样没访问一遍数据库就写一遍连接语句,显然不符合我们设计原则。所以这时候就需要我们去想办法把这些重复的代码进行封装,提高代码的复用性。所以SQLHelper就顺应时代出现了。下面简单介绍一下:
定义:
SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
使用方法
SqlHelper类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用SqlHelper类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。
实例
网上的SqlHelper方法一般都是ExecuteNonquery,ExecuteReader,前面是针对增删改,后面那个针对查询。还有ExecuteDataTable,可以返回DataTable类型的结果,就可以和DataGridView控件绑定数据。这两个都有有参和无参版。有参表示,有传入值,无参表示无传入值,比如查询一个表中的所有数据,就不需要任何条件,无参就好了。
''' <summary> ''' 执行查询的操作,(有参),参数不限 ''' </summary> ''' <param name="cmdText">需要执行语句,一般是sql语句,也有存储过程</param> ''' <param name="cmdType">判断sql语句的类型,一般都不是存储过程</param> ''' <param name="sqlParams">传入的参数</param> ''' <returns></returns> ''' <remarks></remarks> Public Function ExeSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable Dim sqlAdapter As SqlDataAdapter Dim dt As New DataTable Dim ds As New DataSet '给cmd赋值 cmd.CommandText = cmdText cmd.CommandType = cmdType cmd.Connection = conn cmd.Parameters.AddRange(sqlParams) sqlAdapter = New SqlDataAdapter(cmd) '实例化adapter Try sqlAdapter.Fill(ds) '用adapter将dataset填充 dt = ds.Tables(0) 'datatable 为dataset的第一个表 cmd.Parameters.Clear() '清除参数 Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告") Finally Call CloseCmd(cmd) End Try Return dt End Function ''' <summary> ''' 执行查询的操作,(无参) ''' </summary> ''' <param name="cmdText">需要执行语句,一般是sql语句,也有存储过程</param> ''' <param name="cmdType">判断sql 语句的类型,一般 都不是存储过程</param> ''' <returns>datatable ,查询到的表格</returns> ''' <remarks></remarks> Public Function ExeSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable Dim sqlAdapter As SqlDataAdapter Dim ds As New DataSet cmd.Connection = conn cmd.CommandType = cmdType cmd.CommandText = cmdText sqlAdapter = New SqlDataAdapter(cmd) '实例化adapter Try sqlAdapter.Fill(ds) Return ds.Tables(0) Catch ex As Exception Return Nothing Finally Call CloseCmd(cmd) End Try End Function
【总结】[/code]
机房收费系统我们已经敲过一遍了,不管怎么我们再一次去学习的时候,总是要和第一次要进步。既然开始学习面向对象的思想,当然要对这些不变的要内容要进行打包,提高代码复用。可能在刚开始的时候我们对于七层的机房不知道怎么去做,那就把每一块先弄懂,有句话“工欲善其事必先利其器”,这样在敲其他窗体的时候我们才能更加顺手。
相关文章推荐
- redis使用例子和net模块
- 使用JDBC对数据库实现批处理操作
- MySql 探索
- 使用JDBC处理数据库大容量数据类型
- JDBC使用数据库来完成分页功能
- ORACLE体系结构
- MongoDb gridfs-ngnix文件存储方案 - 图片
- linux php redis 环境配置
- winsock和mysql的bug
- 《SQL Server2005技术内幕》读书笔记系列
- mongodb3.0 性能測试报告 一
- Redis内存管理(一)
- SQL Server 2014 Express LocalDB使用
- MYSQL校对规则
- 【前端笔记】关于mongodb的基本概念
- mysql 详细安装步骤
- Mysql workbench连接阿里云问题-Malformed packet
- SQL
- 【机房个人重构】数据库设计之逻辑模型
- 三张表关联查询(原生sql,任何关系型数据库都可以用)