首页 > 代码库 > SqlHelper的使用

SqlHelper的使用

在重构的时候,用到了一个很重要的数据库操作组件—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 Then
            cnnSQL.Close()
        End If
    End 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 = Nothing
        End If
    End 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 = cnnSQL
        cmdSQL.CommandText = cmdText    '设置查询的语句
        cmdSQL.CommandType = cmdType

        cmdSQL.Parameters.AddRange(sqlParams)  '将参数传入

        Try
            cnnSQL.Open()   '打开连接
            Return cmdSQL.ExecuteNonQuery() '执行增删该操作
        Catch ex As Exception
            Return False '如果出错,返回false
        Finally
            Call closeSQLConnection()
            Call closeSQLCommand()
        End Try
    End 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 = cmdType
        cmdSQL.Connection = cnnSQL '将参数传入
        cmdSQL.CommandText = cmdText  '设置查询的语句


        Try
            cnnSQL.Open()   '打开连接
            Return cmdSQL.ExecuteNonQuery()    '执行增删改操作
        Catch ex As Exception
            Return False '如果出错,返回false
        Finally
            Call closeSQLConnection()
            Call closeSQLCommand()
        End Try
    End 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 DataTable
        Dim sqlAdapter As SqlDataAdapter
        Dim dtSQL As New DataTable
        Dim dsSQL As New DataSet

        '用传进的参数填充本类自己的cmd对象
        cmdSQL.CommandText = cmdText
        cmdSQL.CommandType = cmdType
        cmdSQL.Connection = cnnSQL
        cmdSQL.Parameters.AddRange(sqlParams)   '参数添加
        sqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapter

        Try
            sqlAdapter.Fill(dsSQL)  '用adapter将dataset填充
            dtSQL = dsSQL.Tables(0) 'datatable为dataSet的第一个表
            cmdSQL.Parameters.Clear()   '清楚参数
        Catch ex As Exception
            MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
        Finally
            Call closeSQLCommand() '销毁cmd
        End Try
        Return dtSQL
    End 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 DataTable
        Dim sqlAdapter As SqlDataAdapter
        Dim dtSQL As New DataTable
        Dim dsSQL As New DataSet


        '用传进的参数填充本类自己的cmd对象
        cmdSQL.CommandText = cmdText
        cmdSQL.CommandType = cmdType
        cmdSQL.Connection = cnnSQL
        sqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapter
        Try
            sqlAdapter.Fill(dsSQL)  '用adapter将dataSet填充
            dtSQL = dsSQL.Tables(0)
        Catch ex As Exception
            MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告")
        Finally
            Call closeSQLCommand()
        End Try
        Return dtSQL
    End Function
End Class
</span>

-SqlHelper使用的感受

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

 

SqlHelper的使用