SqlHelper的用法

10 篇文章 0 订阅
7 篇文章 0 订阅
SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver、oracle、access、Mysql数据库,也是一个开源项目,提供免费下载。   SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。   SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种
Imports System.Data.SqlClient
Imports System.Configuration
Public Class SqlHelper
    Dim DBConnectStr As New DALUtil
    Dim DBConnection As New SqlConnection(DBConnectStr.ConnectString)

    Dim cmd As New SqlCommand

    '设置连接  

    '定义cmd命令  
    Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Integer
        '将传入的值,分别为cmd的属性赋值    
        cmd.Parameters.AddRange(sqlParams)   '将参数传入    
        cmd.CommandType = cmdType            '设置一个值,解释cmdText    
        cmd.Connection = DBConnection                '设置连接,全局变量    
        cmd.CommandText = cmdText            '设置查询的语句    d

        Try

            DBConnection.Open()                      '打开连接    
            Return cmd.ExecuteNonQuery()     '执行增删改操作    
            'cmd.Parameters.Clear() '清除参数 
        Catch ex As Exception
            Return 0                         '如果出错,返回0    

        Finally
            cmd.Parameters.Clear() '清除参数 
            Call CloseConn(DBConnection)
            Call CloseCmd(cmd)
        End Try
    End Function

    Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer
        '为要执行的命令cmd赋值    
        cmd.CommandText = cmdText       '先是查询的sql语句    
        cmd.CommandType = cmdType       '设置Sql语句如何解释    
        cmd.Connection = DBConnection           '设置连接    

        '执行操作    
        Try
            DBConnection.Open()
            Return cmd.ExecuteNonQuery()
        Catch ex As Exception
            Return 0
        Finally
            Call CloseConn(DBConnection)
            Call CloseCmd(cmd)
        End Try
    End Function

    Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable
        '执行查询操作,有参数  
        Dim adapter As SqlDataAdapter '是 DataSet和 SQL Server之间的桥接器,用于检索和保存数据。
        'SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可填充DataSet中的数据以匹配数据源中的数据)
        '和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时
        ',它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。
        Dim dt As New DataTable
        Dim ds As New DataSet '它是从数据源中检索到的数据在内存中的缓存。DataSet支持多表、表间关系、数据约束等,和关系数据库的模型基本一致

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = DBConnection
        cmd.Parameters.AddRange(sqlParams) '添加条件传参数这样比较安全
        adapter = New SqlDataAdapter(cmd) '

        ' Try
        adapter.Fill(ds) '填充DataSet中的数据以匹配数据源中的数据
        dt = ds.Tables(0) '就是Fill(DataSet ds,Tables tablesName),可见,
        '它需要两个参数,第一个参数是DataSet对象,第二参数是“表名”对象(这个表名是自己给命名的),
        '第一个参数不可省略,而第二个参数如果省略的话,电脑默认把这个表从零“0”开始储存,即有了ds.Tables[0]
        cmd.Parameters.Clear() '参数清零
        'Catch ex As Exception
        ' Throw New Exception("查询失败!")
        ' Finally
        Call CloseCmd(cmd) '关闭命令
        ' End Try
        Return dt
    End Function

    Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
        '执行查询操作,无参数  
        Dim adapter As SqlDataAdapter
        Dim ds As New DataSet

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = DBConnection

        adapter = New SqlDataAdapter(cmd)
        Try
            adapter.Fill(ds)
            Return ds.Tables(0)

        Catch ex As Exception
            Return Nothing
        Finally
            Call CloseCmd(cmd)
        End Try
    End Function
    Public Sub CloseConn(ByVal conn As SqlConnection)
        If (conn.State <> ConnectionState.Closed) Then  '如果没有关闭    
            conn.Close()                    '关闭连接    
            conn = Nothing                  '不指向原对象    
        End If

    End Sub

    Public Sub CloseCmd(ByVal cmd As SqlCommand)

        If Not IsNothing(cmd) Then          '如果cmd命令存在    
            cmd.Dispose()                   '销毁    
            cmd = Nothing
        End If
    End Sub

End Class

方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值