从个人版机房到现在的合作,一直在用Sqlhelper。那到底为什么要用?然后怎么去用?真的了解吗?调机房的时候,我发现自己对Sqlhelper的理解特别的浅显,只是大概说一下作用,一些具体的就不明白了。下面我主要总结一下自己学习中的缺失的部分。
一、定义
SqlHelper 是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在SqlHelper 类中实现的每种方法都提供了一组一致的重载,因此开发人员可以确定传递连接、和参数信息的方式。
二、成员
- ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。
- ExecuteReader。此方法用于返回SqlDataReader对象,该对象包含由某一命令返回的结果集。
- ExecuteDataset。此方法返回Dataset对象,该对象包含由某一命令返回的结果集。
- ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。
- ExecuteXmlReader。此方法返回FOR XML 查询的 XML 片段。
三、实现
<span style="font-size:18px">Option Explicit On
Option Strict On
ImportsSystem.Data.SqlClient
ImportsSystem.Configuration
''' <summary>
''' 数据库助手类,主要是对数据库的增删改查进行操作。(其中的打开数据库的连接,用的是单利模式,只能实例化一个连接,打开一个一个连接)
''' </summary>
'''
PublicNotInheritable Class SqlHelper
''' <summary>
''' 定义连接和cmd命令(方法一,直接实例化)
''' </summary>
''' <remarks></remarks>
Dim connSQL As SqlConnection =SqlServerConnection.GetConn() '’调用单例进行实例化
Dim cmdSQL As New SqlCommand
''' <summary>
''' 公有的构造函数,防止外界的对他进行实例化。
''' </summary>
Public Sub New()
connSQL = SqlServerConnection.GetConn()
End Sub
''' <summary>
''' 有参数的增删改
''' </summary>
''' <paramname="strText"></param>
''' <paramname="cmdType"></param>
''' <paramname="sqlParams"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function UpdDelAlter(ByVal strTextAs String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) AsBoolean
cmdSQL.Parameters.AddRange(sqlParams) ’参数传入
cmdSQL.CommandType = cmdType
cmdSQL.Connection =connSQL ’设置连接
cmdSQL.CommandText =strText ’设置查询语句
Try
ReturnCBool(cmdSQL.ExecuteNonQuery())
cmdSQL.Parameters.Clear()
Catch ex As Exception
Return False
End Try
End Function
''' <summary>
''' 无参数的增删改
''' </summary>
''' <paramname="strText"></param>
''' <paramname="cmdType"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function UpdDelAlterNo(ByVal strTextAs String, ByVal cmdType As CommandType) As Boolean
cmdSQL.CommandType = cmdType
cmdSQL.Connection =connSQL ’设置连接
cmdSQL.CommandText =strText ’设置查询语句
Try
ReturnCBool(cmdSQL.ExecuteNonQuery())
Catch ex As Exception
Return False
End Try
End Function
''' <summary>
''' 有参数的查询
''' </summary>
''' <paramname="strText"></param>
''' <paramname="cmdType"></param>
''' <paramname="sqlParams"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Query(ByVal strText AsString, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) AsDataTable
Dim sqlAdapater As SqlDataAdapter
Dim dtSQL As New DataTable
Dim dsSQL As New DataSet
cmdSQL.CommandText = strText
cmdSQL.CommandType = cmdType
cmdSQL.Connection = connSQL
cmdSQL.Parameters.AddRange(sqlParams) '参数添加
sqlAdapater = NewSqlDataAdapter(cmdSQL) '实例化Adapter
Try
sqlAdapater.Fill(dsSQL) '用adapter将dataSet填充
dtSQL =dsSQL.Tables(0) 'datatable为dataSet的第一个表
cmdSQL.Parameters.Clear() '清除参数
Catch ex As Exception
MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle),"警告")
End Try
Return dtSQL
End Function
''' <summary>
''' 无参数的查询
''' </summary>
''' <paramname="strText"></param>
''' <paramname="cmdType"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function QueryNo(ByVal strText AsString, ByVal cmdType As CommandType) As DataTable
Dim sqlAdapater As SqlDataAdapter
Dim dtSQL As New DataTable
Dim dsSQL As New DataSet
cmdSQL.CommandText = strText
cmdSQL.CommandType = cmdType
cmdSQL.Connection = connSQL
sqlAdapater = NewSqlDataAdapter(cmdSQL) '实例化Adapter
Try
sqlAdapater.Fill(dsSQL) '用adapter将dataSet填充
dtSQL =dsSQL.Tables(0) 'datatable为dataSet的第一个表
Catch ex As Exception
MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle),"警告")
End Try
Return dtSQL
End Function
End Class</span>
四、注意
1、如果使用SqlHelper方法调用数据库存储过程,需要获取存储过程的返回值,请使用带SqlParameter[]参数的方法,Object[]参数的方法无法获取存储过程返回值
博客推荐:http://blog.csdn.net/xvshu/article/details/8609399