SQL Help

SQLHelp是对数据库操作的封装,包括增删改查等。本文介绍了SqlDataAdapter、DataSet和DataTable的概念及其关系:SqlDataAdapter作为桥梁连接DataSet和SQL Server,DataSet是内存中的数据库,而DataTable则是数据集合。通过SqlDataAdapter.fill(DataSet)和DataSet.table(DataTable)进行数据操作。通过理解这些概念,可以更好地使用SQLHelp进行数据库管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL Help是什么?

其实就是一个对数据库操作方法的包装,类似增删改查这样的操作。不知道大家还记不记得以前我们在敲学生信息管理系统的时候在模板里写的数据库连接的代码吗?尽管已经将一些操作放在模板里了,可是我到现在还能想起自己那时候不知道敲了多少个cnn,msgtxt,txtsql这样的东东。

有什么?

这里需要大家了解几个名词,他可以帮助我们更好地使用SQLHelp来操作数据库。

1. SqlDataAdapter

 SqlDataAdapter是 DataSet和 SQLServer之间的桥接器,用于检索和保存数据。SqlDataAdapter通过对数据源使用适当的TSQL语句映射 Fill(它可更改DataSet中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)

2.DataSet

DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。

3.DataTable

这个相信大家都不陌生了,我就不一一赘述了。

如何使用这三者?

在使用之前我们需要了解这三者之间的关系。

SqlDataAdapter>DataSet>DataTable

SqlDataAdapterfill属性包容DataSet,通常写作SqlDataAdapter.fill(DataSet)

DataSettable属性包容DataTable,通常写作DataSet.table(DataTable)

 

知道他们是什么了,我们用机房登录开始实战吧?

Public Class SqlHelper

    Private ReadOnly strConnection As String = ConfigurationManager.AppSettings("strCon")

    '数据库连接

    Dim con As SqlConnection = New SqlConnection(strConnection)
    Dim cmd As New SqlCommand


    '执行增删改,返回类型为boolean来确认是否执行成功(有参数)
    Public Function ExeAddDeUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Boolean
        cmd.Parameters.AddRange(paras)
        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = con
        '执行数据库
        Try
            con.Open()
            Return cmd.ExecuteNonQuery
        Catch ex As Exception
            Return 0
        Finally
            cmd.Dispose() '释放所有的资源
            con.Close() '数据库关闭
        End Try
    End Function

    '没有参数的增删改
    Public Function ExeAddDeUpdate(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer
        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = con
        '执行数据库
        Try
            con.Open()
            Return cmd.ExecuteNonQuery
        Catch ex As Exception
            Return 0
        Finally
            cmd.Dispose() '释放所有的资源
            con.Close() '数据库关闭
        End Try
    End Function

    '有参数的查询
    Public Function ExeSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
        Dim sqlAtapter As SqlDataAdapter '定义一个桥接器变量,用来联系dataset和SQL数据库
        Dim dt As New DataTable '
        Dim ds As New DataSet '用来保存满足要求的数据

        cmd.Connection = con
        cmd.CommandType = cmdType
        cmd.CommandText = cmdText
        cmd.Parameters.AddRange(paras)

        sqlAtapter = New SqlDataAdapter(cmd) '实例化满足要求的桥接器
        Try
            sqlAtapter.Fill(ds)
            dt = ds.Tables(0)
            cmd.Parameters.Clear() '清除数据,方便下次使用 
        Catch ex As Exception
            MsgBox("查询失败")
        Finally
            cmd.Dispose()
            con.Close()
        End Try
        Return dt '将符合的结果返回
    End Function

    '没有参数的查询
    Public Function ExeSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
        Dim sqlAtapter As SqlDataAdapter '定义一个桥接器变量,用来检索和保存数据
        Dim dt As New DataTable '
        Dim ds As New DataSet '用来保存满足要求的数据

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

        sqlAtapter = New SqlDataAdapter(cmd)
        Try
            sqlAtapter.Fill(ds) '用ds填充桥接器
            dt = ds.Tables(0)
        Catch ex As Exception
            Return Nothing
        Finally
            cmd.Dispose()
            con.Close()
        End Try
        Return dt '结果返回
    End Function
End Class

 

 

 

总结:说实话弄这个七层的时候我就真真的收到了打击,感觉自己在计算机方面就是没有开窍似得,尤其是各种变量和参数在哪里来回倒腾我就觉得头都大了。直到我弄这个的时候,头脑里头好像慢慢清晰了许多。其实这么多的层和类,都可以简化成一个,永远是实例化对象,调用其它层的方法,利用变量传参交流。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值