机房重构进行了一小阶段,刚开始敲代码的时候,实现每一个功能都要在D层类中写一次数据据库连接SqlConnection,SqlCommand,SqlDataReader语句,感到相当地麻烦。遇到这个问题后,就想到了面向对象的封装性,把D层中重复的SQL语句封装起来,以提高代码的复用性。通过上网查资料,知道了SqlHelper类和其使用方法。

SqlHelper类将数据库连接(SqlConnection,SqlCommand,SqlDataReader)语句封装起来,在实现某一功能时,只需实力化SqlHelper类之后,给其中的方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

SqlHelper类

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
'/*************************************************
'类名:SqlHelper
'作者:孟浩杰
'说明:用户对数据库操作帮助类,对数据库的连接(sqlConnection,SqlCommand,SqlDataReader)等语句的封装。
'创建日期:2015-2-6
'版本号:机房收费系统1.0
'**********************************************/Public Class SqlHelper'获取配置文件中的连接字符串Public ReadOnly strSQLConnection As String = System.Configuration.ConfigurationSettings.AppSettings("ConnStr")'定义连接Dim cnnSQL As New SqlConnection'定义Cmd命令Dim cmdSQL As New SqlCommand'///<summary>'///depiction<该方法是SqlHelper的初始化>'///<summary>Public Sub New()cnnSQL = New SqlConnection(strSQLConnection)End Sub'   /// <summary>  '   /// depiction:<改方法是打开数据库的连接>  '   /// </summary> Public Sub openSQLConnection()'判断数据库连接对象状态是否为断开,如果断开就打开  If cnnSQL.State = ConnectionState.Closed ThencnnSQL.Open()End IfEnd Sub'   /// <summary>  '   /// depiction:<改方法是关闭数据库的连接>  '   /// </summary>  Public Sub CloseSQLConnection()'判断数据库连接对象状态是否为断开,如果不断开就断开  If cnnSQL.State <> ConnectionState.Closed ThencnnSQL.Close()End IfEnd Sub'/// <summary>  '/// depiction:<改方法是关闭数据库命令>  '/// </summary>  Public Sub CloseSQLCommand()'如果cmd命令存在  If Not IsNothing(cmdSQL) Then'销毁  cmdSQL.Dispose()cmdSQL = NothingEnd IfEnd Sub'/// <summary>    '///depiciton:<执行增删改三个操作,(有参)返回值为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)'传入SQL语句的类型cmdSQL.CommandType = cmdType'设置连接 cmdSQL.Connection = cnnSQL'设置查询的语句 cmdSQL.CommandText = strSqlTry'打开连接    cnnSQL.Open()'执行增删改操作 Return cmdSQL.ExecuteNonQuery()'清除参数cmdSQL.Parameters.Clear()Catch ex As Exception'如果出错,返回false Return FalseFinallyCall 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 = cmdType'将参数传入 cmdSQL.Connection = cnnSQL'设置查询的语句cmdSQL.CommandText = strSqlTry'打开连接 cnnSQL.Open()'执行增删改操作    Return cmdSQL.ExecuteNonQuery()Catch ex As Exception'如果出错,返回false Return FalseFinallyCall 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 DataTable()Dim dsSQL As New DataSet'用传进的参数填充本类自己的cmd对象    cmdSQL.CommandText = strSqlcmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQL'参数添加cmdSQL.Parameters.AddRange(sqlParams)'实例化adapter      sqlAdapter = New SqlDataAdapter(cmdSQL)Try'用adapter将dataSet填充 sqlAdapter.Fill(dsSQL)'datatable为dataSet的第一个表 dtSQL = dsSQL.Tables(0)'清除参数   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 = cnnSQL'实例化adaptersqlAdapter = New SqlDataAdapter(cmdSQL)Try'用adapter将dataSet填充sqlAdapter.Fill(dsSQL)'datatable为dataSet的第一个表dtSQL = dsSQL.Tables(0)Catch ex As ExceptionMsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")Finally'最后一定要销毁cmd   Call CloseSQLCommand()End TryReturn dtSQLEnd FunctionEnd Class

总结

在机房重构的过程中,我们会遇到写很多重复的代码的情况。遇到这种情况,我们就要多去想想去怎样把这些重复的代码封装起来,封装起来的好处。对我们来说这是一种成长。

SqlHelper类的使用相关推荐

  1. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  2. 整理出一个比较实用的SqlHelper类 满足大多数情况的使用

    /// <summary>/// SqlHelper类 by zy 2016-3-11/// </summary>public sealed class SqlHelper{/ ...

  3. SqlHelper 类

    using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using Syst ...

  4. .net mysql sqlhelper_「谢灿asp.net三层架构」5、DAL中公共类-SqlHelper类应该这样写

    <谢灿asp.net三层架构>系列教程由小灿灿IT首发百度平台,希望对各位喜欢计算机的同学有所帮助!关注+分享+评论+点赞,是对我们最好的支持!有了您的支持,我们坚信我们会做得更好! 在C ...

  5. 使用sqlhelper类查询时假如不需要参数化,那到时SqlParameter这个传参怎么处理

    发表于: 2015-04-25 22:53:31 我在学写SqlHelper类.用SqlParameter[]数组做为参数. 我按条件查询时,可以弄个参数化 但是查询时假如并不需要参数化,那到时Sql ...

  6. C# SqlHelper类的使用

    SqlHelper类 1.首先SqlHelper类是一个基于.NET Framework的数据库操作组件,包含了数据库的操作方法.可以简化在C#中使用ADO.NET连接数据库时每次都要编写连接.打开. ...

  7. 微软官方SQLHELPER类,很实用,中文注释

    微软官方SQLHELPER类,很实用,中文注释 找了好就终于找到个完整的中文注释的了,语法,结构都值得学习哦 using System; using System.Data; using System ...

  8. EA教程 (四) SQLHelper类

    今天我们主要讲述如何用EA来做SQLHelper层的编写,首先看一下完成之后的SqlHelper图,其中我们重点关注圈注中的内容 这张图中用的单例模式的具体代码和两个类之间的关系,可以参考我之前写的一 ...

  9. SqlHelper类中的ExecuteNonQuery方法解析

    在SqlHelper类(windows原)中,ExecuteNonQuery方法通常用于执行数据库更新与返回存储过程的输出参数,它有九个重载,接下来我们来一一解析. 首先介绍一下此方法可以输入哪些参数 ...

最新文章

  1. hdu2006 求奇数的乘积【C++】
  2. c++多线程队列 类对象
  3. C#中创建、打开、读取、写入、保存Excel的一般性代码
  4. Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现
  5. PartialView 加载Js
  6. Android用户界面程序设计示例
  7. 微型计算机杂志合订本,微型计算机(2008上半年合订本)(上下)(附光盘)
  8. 京东java笔试_2017阿里,百度,京东java面试+笔试大合集,2018的你会吗?
  9. Anaconda 国内镜像源整理
  10. java开发cms视频教程下载地址_Java + MySQL 开发CMS系统实例教程
  11. 纵坐标是横的还是竖的_600*1200墙砖横贴好,还是竖贴好?讲讲这两种贴法的问题...
  12. 免费商用字体查询方法
  13. 微软疑断自由软件开发者“活路”,禁止在微软商店发布商业开源
  14. 保存Simulink仿真模型为图片或者PDF的方法
  15. win10计算机用户名修改密码,win10怎么修改administrator账户密码?
  16. bzoj 3991 [SDOI2015]寻宝游戏
  17. c语言 end while,C语言报错:error: expected ‘while’ at end of input } ^
  18. Linux下读取RFID卡号(C串口编程)
  19. MATLAB数学经典建模之风扇特性:流量 随 压比函数值变化的图形 (2 维图形)
  20. 基于vue-cli快速构建

热门文章

  1. ZCU104开发板:开发板组件描述
  2. 存储管理——内存扩充技术
  3. R与指数分布(1) 概率密度函数
  4. 点对点传输现状,镭速高速点对点传输解决方案
  5. 双足竞走机器人的意义_基于STM32双足竞步机器人的研究与设计
  6. 某公司公众号任意用户注册漏洞利用
  7. 天梯赛题目练习L1-001,L1-002,L1-003
  8. 什么是SQL注入?怎么解决SQL注入?
  9. 趋势一次一单EA,不加仓不网格,每单带止损止盈,风险可控
  10. JavaScript 时间范围