[置顶] 真正理解SqlHelper吗?

      从个人版机房到现在的合作,一直在用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   


你可能感兴趣的:([置顶] 真正理解SqlHelper吗?)