在重构的时候,用到了一个很重要的数据库操作组件—SqlHelper。

--SqlHelper

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

-sqlHelper类

<span style="font-family:KaiTi_GB2312;font-size:18px;">'**********************************************
'作者:马世超
'说明:创建SQLHelper
'创建日期:2014年12月30日
'版本号:1.0
'**********************************************Imports System.Data.SqlClient
Imports System.Configuration '在管理器中添加引用
'类名:SQLHelper
'意义:用户对数据库操作帮助类
Public Class SQLHelper'获取配置文件中的连接字符串Private ReadOnly strSQLConnection As String = ConfigurationManager.AppSettings("strSqlConnection")'定义连接Dim cnnSQL As SqlConnection'定义cmd命令Dim cmdSQL As New SqlCommand' <summary>' depiction:该方法是sqlhelper的初始化' </summary>Public Sub New()cnnSQL = New SqlConnection(strSQLConnection)End Sub</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary>' depiction:该方法是关闭数据库连接' </summary>Private Sub closeSQLConnection()'判断数据库连接对象是否断开,如果没有断开就断开If cnnSQL.State <> ConnectionState.Closed ThencnnSQL.Close()End IfEnd Sub</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary>' depiction:该方法是关闭数据库命令' </summary>Private Sub closeSQLCommand()If Not IsNothing(cmdSQL) Then '如果cmd命令存在cmdSQL.Dispose()    '销毁cmdSQL = NothingEnd IfEnd Sub</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary>' depiction:执行增删改操作,(有参数)返回boolean类型,确认是否执行成功' </summary>' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param>' <param name="cmdType">判断Sql语句的类型,一般是存储过程</param>' <param name="sqlParams">参数数组,无法确认有多少参数</param>'<returns>返回布尔类型,成功为true,否则为false</returns>Public Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Boolean'用传进的参数填充本类自己的cmd对象cmdSQL.Connection = cnnSQLcmdSQL.CommandText = cmdText    '设置查询的语句cmdSQL.CommandType = cmdTypecmdSQL.Parameters.AddRange(sqlParams)  '将参数传入TrycnnSQL.Open()   '打开连接Return cmdSQL.ExecuteNonQuery() '执行增删该操作Catch ex As ExceptionReturn False '如果出错,返回falseFinallyCall closeSQLConnection()Call closeSQLCommand()End TryEnd Function</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary>' depiction:执行增删改操作,(无参数)返回boolean类型,确认是否执行成功' </summary>' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param>' <param name="cmdType">判断Sql语句的类型,一般不是存储过程</param>' <param name="sqlParams">参数数组,无法确认有多少参数</param>'<returns>返回布尔类型,成功为true,否则为false</returns>Public Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType) As Boolean'用传进的参数填充本类自己的cmd对象cnnSQL.Open()cmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQL '将参数传入cmdSQL.CommandText = cmdText  '设置查询的语句TrycnnSQL.Open()   '打开连接Return cmdSQL.ExecuteNonQuery()    '执行增删改操作Catch ex As ExceptionReturn False '如果出错,返回falseFinallyCall closeSQLConnection()Call closeSQLCommand()End TryEnd Function</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary>' depiction:执行查询操作,(有参数)返回datatable类型,确认是否执行成功' </summary>' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param>' <param name="cmdType">判断Sql语句的类型,一般不是存储过程</param>' <param name="sqlParams">参数数组,无法确认有多少参数</param>'<returns>返回布尔类型,成功为true,否则为false</returns>Public Function ExecuteSelect(ByVal cmdText 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 = cmdTextcmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQLcmdSQL.Parameters.AddRange(sqlParams)   '参数添加sqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapterTrysqlAdapter.Fill(dsSQL)  '用adapter将dataset填充dtSQL = dsSQL.Tables(0) 'datatable为dataSet的第一个表cmdSQL.Parameters.Clear()   '清楚参数Catch ex As ExceptionMsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")FinallyCall closeSQLCommand() '销毁cmdEnd TryReturn dtSQLEnd Function</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">' <summary>' depiction:执行查询操作,(无参数)返回datatable类型,确认是否执行成功' </summary>' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param>' <param name="cmdType">判断Sql语句的类型,一般不是存储过程</param>'<returns>返回布尔类型,成功为true,否则为false</returns>Public Function ExecuteSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTableDim sqlAdapter As SqlDataAdapterDim dtSQL As New DataTableDim dsSQL As New DataSet'用传进的参数填充本类自己的cmd对象cmdSQL.CommandText = cmdTextcmdSQL.CommandType = cmdTypecmdSQL.Connection = cnnSQLsqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapterTrysqlAdapter.Fill(dsSQL)  '用adapter将dataSet填充dtSQL = dsSQL.Tables(0)Catch ex As ExceptionMsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")FinallyCall closeSQLCommand()End TryReturn dtSQLEnd Function
End Class
</span>

-SqlHelper使用的感受

在该开始使用SqlHelper的时候,由于对SqlHelper还不了解,所以感觉好高大上。其实在做VB版机房收费系统的时候,就用到了类似SqlHelper的东西。在对数据库增删改查的时候,都调用了一个过程,来方便数据库连接。这次又遇到了,刚开始不认识,后来经过无数次的出错,无数次的对SqlHelper进行回顾,再看起来,又感觉好简单。学习东西,实践是很重要的。

注:这篇博客写的sqlHelper要求每次用的时候必须得new一个sqlHelper对象,不然在访问量大的时候会出现线程安全问题。当然,如果每次都new,则在访问量大的时候会造成内存浪费。在此就不加修改了,还望参考的人注意。--2017年1月6日补充

SqlHelper的使用相关推荐

  1. 一步一步写自己的SqlHelper类库

    前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...

  2. one pragmatical sqlhelper

    namespace ConsoleApplication2 {using System;using System.Collections.Generic;using System.Linq;using ...

  3. C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库

    这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数 ...

  4. SQLserver数据库操作帮助类SqlHelper

    1 SqlHelper源码 using System; using System.Data; using System.Xml; using System.Data.SqlClient; using ...

  5. 一步步写自己SqlHelper类库(五):Command对象

    1.Command对象基础 当我们使用Connection对象里面的方法打开数据库后,要查询自己所需的数据或对数据库的内容进行增删改时,Command对象就派上用场了! MSDN定义:建立与数据源的连 ...

  6. JAVA入门到精通-第73讲-学生管理系统5-dao.sqlhelper

    -Model2模式 如果数据模型会很多,怎么办? 处理业务逻辑的:Model层 后台又分为:处理业务逻辑和对数据库的操作DAO-data access object -决定,再抽象一层出来:数据模型: ...

  7. 利用SqlHelper.cs实现Web程序对数据库的增、删、改等操作

    利用SqlHelper.cs实现Web程序对数据库的增.删.改等操作 (2006-08-22 00:50:05) 转载▼ 分类:技术杂谈 在SqlHelper.cs中,封装了所有和SQL数据库相关的操 ...

  8. 轻轻的我走了,正如我轻轻的来…——ADO.NET核心类的灭度与SQLHelper的诞生——十八相送(下)...

    源代码:13033480群共享 ADO.NET的SqlServer.NET数据提供程序,核心的类有4个,而在这个订餐系统中,我们只使用了3个,SqlConnection.SqlCommand.SqlD ...

  9. SqlHelper++

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  10. java sqlhelper_java版sqlhelper(转)

    packageSql;import java.sql.*;import java.util.logging.*;/*** SQL 基本操作 * 通过它,可以很轻松的使用 JDBC 来操纵数据库*/ p ...

最新文章

  1. 【7.9 讲座直播】纳米孔靶向测序技术在新型冠状病毒与常见呼吸道病毒快速诊断中的应用...
  2. kafka高可用(集群)
  3. 7月书讯:众多畅销书升级!
  4. Matplotlib实例教程 | 句子长度累积分布函数图
  5. 十大迷你iPhone天气应用
  6. 【Source Insight 4.0 英文版】 如何设置选中高亮
  7. Cpp 对象模型探索 / 外部调用私有的虚函数的方法
  8. android 讯飞语音评测,讯飞语音评测demo
  9. java中float%int_java中short、int、long、float、double取值范围
  10. 为什么总是喜欢看我桌面呢?
  11. leetcode96. 不同的二叉搜索树(动态规划)
  12. 消息中间件 --- Kafka快速入门
  13. mysql查询不超过19_mysql45讲 19.为什么我只查一行的语句,也执行这么慢?
  14. codeforce438D The Child and Sequence
  15. Abaqus二次开发的一些自制脚本
  16. mysql mariadb不能启动原因_MySQL(MariaDB)无法启动
  17. 业界总结 | BERT的花式玩法
  18. 精益企业中架构师的角色
  19. python脚本检查文件内容
  20. P1397 [NOI2013] 矩阵游戏(矩阵乘法欧拉定理)

热门文章

  1. 理解镜像、容器和存储驱动
  2. 计算机类sci四大水刊,材料灌水的sci期刊_十大水榜sci杂志_四大垃圾sci杂志
  3. Markdown 基础入门
  4. 全面剖析《自己动手写操作系统》第四章---加载Loader.bin
  5. udt4 VS udt gateway
  6. 苹果笔记本服务器虚拟系统,苹果Mac虚拟机装Windows哪家强?
  7. MapGuide空间参考系API
  8. python人脸识别算法_python人脸算法
  9. Enscape 代理服务器和防火墙设置
  10. 【Mysql】SQL性能分析