`
lovnet
  • 浏览: 6880768 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

SQlHelper强大用处

 
阅读更多
最近写的几条线的代码,发现很多重复和数据库打交道的代码连接的打开或关闭,例如:
 '定义一个连接字符串
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象

很是费劲,代码重复多很是不友好,这个连接过程自己理解的差不多了,听师傅常说当代码发现重复在两遍以上就要考虑如何把它拿出来抽象成一个类,整个机房收费系统需要使用这样的方法太频繁了,再重复需要的时候直接调用它就行了,后来自己查资料和博客,自己加上了SqlHelper里面封装了方法,发现它真的很是强大,大大减少了代码量与提高了效率.

SqlHelper主要是用于简化重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数,存储过程等,就可以访问数据库了,很方便。

在 SqlHelper 类中实现的方法包括:

ExecuteNonQuery。此方法用于执行(有参数或无参数的)不返回任何行或值的命令。这些命令通常用于执行数据库(增\删\改)更新,但也可用于返回存储过程的输出参数。
ExecuteReader。此方法用于返回SqlDataReader对象,该对象包含由某一命令返回的结果集。
ExecuteDataset。此方法返回 DataSet 对象,该对象包含由某一命令返回的结果集。

下面是自己的SqlHelper,和大家共同学习
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data

Public Class DBHelper
    
    ''' <summary>
    ''' 有参数的非查询的操作
    ''' </summary>
    ''' <param name="cmdText">增删改语句或者存储过程</param>
    ''' <param name="cmdType">命令类型文本或者存储过程</param>
    ''' <param name="paras">参数数组</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Integer

        '定义一个连接字符串
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象
        Dim res As Integer '定义一个变量用户存放返回结果
        cmd = New SqlCommand(cmdText, conn)
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        Try
            '打开数据连接
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
            '执行查询操作
            res = cmd.ExecuteNonQuery()

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            '关闭数据库连接
            If conn.State = ConnectionState.Open Then
                conn.Close()

            End If
        End Try
        Return res '返回受影响的行数
    End Function
    ''' <summary>
    ''' 执行不带参数的非查询操作
    ''' </summary>
    ''' <param name="cmdTxt">增删改Sql语句或者存储过程</param>
    ''' <param name="cmdType">命令类型文本或者存储过程</param>
    ''' <returns>受影响的行数</returns>
    ''' <remarks></remarks>
    Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String, ByVal cmdType As CommandType) As Integer
        '定义一个连接字符串
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象
        Dim res As Integer '定义一个变量用户存放返回结果
        cmd = New SqlCommand(cmdTxt, conn)
        cmd.CommandType = cmdType
        Try
            '打开数据库连接
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
            '执行命令
            res = cmd.ExecuteNonQuery()

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            '关闭数据库连接
            If conn.State = ConnectionState.Open Then
                conn.Close()

            End If
        End Try
        Return res '返回受影响的行数
    End Function
    ''' <summary>
    ''' 获取一个不带参数的查询的DataTable 结果集
    ''' </summary>
    ''' <param name="cmdtxt">查询sql语句或者存储过程</param>
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>
    ''' <returns>查询的结果</returns>
    ''' <remarks></remarks>
    Public Shared Function GetDataTable(ByVal cmdtxt As String, ByVal cmdType As CommandType) As DataTable
        '定义一个连接字符串
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter '定义一个适配器对象

        cmd = New SqlCommand(cmdtxt, conn)
        adaptor = New SqlDataAdapter(cmd)
        adataset = New DataSet
        cmd.CommandType = cmdType
        Try
            '打开数据库连接
            If conn.State = ConnectionState.Closed Then
                conn.Open()
                '填充数据集
                adaptor.Fill(adataset)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            '关闭数据库连接
            If conn.State = ConnectionState.Open Then
                conn.Close()

            End If
        End Try
        Return adataset.Tables(0) '返回数据集的第一个表
    End Function
    ''' <summary>
    ''' 获取一个带参数的查询的DataTable结果集
    ''' </summary>
    ''' <param name="cmdTxt">查询SQL语句或者存储过程名称</param>
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>
    ''' <param name="paras">参数数组</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter '定义一个适配器对象
        cmd = New SqlCommand(cmdTxt, conn)
        adaptor = New SqlDataAdapter(cmd)
        adataset = New DataSet
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        Try
            '打开数据库连接
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
            '填充数据集
            adaptor.Fill(adataset)

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            '关闭数据库连接
            If conn.State = ConnectionState.Open Then
                conn.Close()

            End If
        End Try
        Return adataset.Tables(0)

    End Function
    ''' <summary>
    ''' 获取一个不带参数的查询结果阅读器
    ''' </summary>
    ''' <param name="cmdTxt">查询的SQL语句或者存储过程名称</param>
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>
    ''' <returns>查询结果</returns>
    ''' <remarks></remarks>
    Public Shared Function GetReader(ByVal cmdTxt As String, ByVal cmdType As CommandType) As SqlDataReader
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象
        'Dim reader As SqlDataReader
        cmd = New SqlCommand(cmdTxt, conn)
        cmd.CommandType = cmdType
        Try
            '打开数据库连线  
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If

            '执行命令  

            'reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally


        End Try

        '返回一个阅读器  


        Return cmd.ExecuteReader(CommandBehavior.CloseConnection)
    End Function
    ''' <summary>
    ''' 获取一个带参数的查询结果阅读器  
    ''' </summary>
    ''' <param name="cmdTxt">查询的SQL语句或者存储过程名称</param>
    ''' <param name="cmdType">命令类型(文本或者存储过程)</param>
    ''' <param name="paras">参数数组</param>
    ''' <returns>查询结果</returns>
    ''' <remarks></remarks>
    Public Shared Function GetReader(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As SqlDataReader
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象
        cmd = New SqlCommand(cmdTxt, conn)
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        'Dim reader As SqlDataReader  
        Try
            '打开数据库连线  
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If

            '执行命令  

            'reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)  

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally


        End Try

        '返回一个阅读器  
        Return cmd.ExecuteReader()
    End Function
End Class
分享到:
评论

相关推荐

    最新强大而简便的SqlHelper类

    2,所以数据库操作只需要调用SQLHelper中的方法即可.DataAccess类是在SQLHelper类内部调用的类. 3,使用前请先执行以下方法,以进行类初始化: string DBConnectionString = "data source=.;database=Northwind;user id...

    Sqlhelper

    总的来说,SqlHelper类是.NET开发中一个强大的数据库访问工具,通过封装数据库操作,降低了开发难度,提高了代码的可重用性和安全性。它的设计和实现充分考虑了不同数据库系统的差异,并且易于扩展,是进行数据库...

    sqlhelper下载

    sqlhelper sql 强大的SQL帮助文件

    SqlHelper.zip

    SqlHelper是C#编程语言中常见的一种用于简化数据库操作的辅助类库,它为开发者提供了方便的接口,以便更高效地执行SQL语句。在.NET框架下,开发人员经常使用SqlHelper来代替直接操作ADO.NET组件,以提高代码的可读性...

    强大的SqlHelper类

    总结,SqlHelper类是一个强大且实用的工具,它为.NET开发人员提供了一种简单的方式来执行数据库操作。对于初学者,掌握SqlHelper类的使用,能够快速提升他们的数据库编程能力,同时减少潜在的错误和安全风险。通过...

    SqlHelper源码及说明

    // SQLHelper.cs // // This file contains the implementations of the SqlHelper and SqlHelperParameterCache // classes. 这个文件实现了SqlHelper类和SqlHelperParameterCache类 //其中SqlHelper类执行各种方式...

    sqlhelper

    ### SQLHelper类详解 #### 一、概述 `SQLHelper`类主要负责处理与数据库相关的操作,例如执行SQL语句、获取数据等。该类在.NET框架下开发,利用`System.Data.SqlClient`命名空间中的`SqlConnection`、`SqlCommand`...

    C# SqlHelper类 (微软官方)

    在.NET框架中,微软提供了一个名为SqlHelper的类,它是一个辅助类,用于简化与SQL Server数据库的交互。这个类通常被用在C#应用程序中,以执行SQL命令和存储过程。SqlHelper类的设计目标是提高代码的可重用性和安全...

    SQLHelper数据库操作组件

    SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是...

    微软的C#操作数据库类SQLHelper

    总的来说,SQLHelper是微软提供的一个强大且实用的工具,它使得C#开发者在处理SQL Server数据库时更加高效和安全。通过学习和使用SQLHelper,我们可以避免编写大量重复的数据库操作代码,从而专注于应用程序的核心...

    数据连接类SqlHelper

    SqlHelper 是一个在IT行业中广泛使用的工具类,主要用于简化数据库操作,尤其是对于.NET框架下的C#开发者来说。这个类库通常包含一系列静态方法,提供了一种便捷的方式来执行SQL语句,进行数据的增、删、改、查...

    含有事务操作的sqlhelper类C#

    SQLHelper是.NET Framework中一个实用的类,它简化了与SQL Server数据库的交互过程,特别是执行SQL命令时。在这个主题中,我们将深入探讨如何在C#中使用SQLHelper类进行事务操作,以及事务的重要性和应用。 事务是...

    sqlhelper (官方版)

    总的来说,SqlHelper是一个强大的工具,它降低了.NET开发者进行数据库操作的复杂度,提高了代码的可维护性,并在一定程度上提升了系统的性能。对于初学者和有经验的开发者来说,都是一个值得信赖的选择。通过学习和...

    Sqlhelper类的的内容

    Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容Sqlhelper类的的内容

    SqlHelper.cs 微软的SQLHelper类(含完整中文注释)

    SqlHelper.cs 微软的SQLHelper类 微软的SQLHelper类(含完整中文注释) 非常好的SQLHelper

    微软的SQLHelper类 (含完整中文注释) c# asp.net winform

    微软的SQLHelper类 (含完整中文注释) c# ...微软的SQLHelper类是一个功能强大且灵活的数据访问帮助类。该类提供了多种方法来执行SQL语句、存储过程和Scalar查询,并提供了一个易于使用的接口来访问SQL Server数据库。

    SQLHelper中文翻译版本

    SQLHelper中文翻译版本 SQLHelper中文翻译版本 SQLHelper中文翻译版本

    SqlHelper dll 文件

    总的来说,SqlHelper.dll是VS2005中进行数据库操作的一个强大工具,它的存在极大地提高了开发效率,降低了代码出错的可能性。虽然随着技术的发展,ORM(对象关系映射)框架如Entity Framework和NHibernate逐渐取代了...

    SqlHelper OracleHelper 下载

    不过,随着ORM(对象关系映射)框架如Entity Framework和Dapper的流行,现在更多地推荐使用这些框架,因为它们提供了更高级的功能,如自动映射、延迟加载和更强大的查询能力。尽管如此,SqlHelper和OracleHelper仍然...

    C# Sqlhelper

    C# Sqlhelper 简单的sqlhelper 类

Global site tag (gtag.js) - Google Analytics