VB.net断开连接表

时间:2013-12-27 19:04:14

标签: sql vb.net datatable

我正在尝试将配置设置加载到一组DataTable中,然后断开与数据库的连接。我确定我做错了,因为之后DataTables是空的。这是代码:

从课程顶部开始:

'Set up Configuration DataTables
Dim dtDataAlerts As New DataTable

运行例程以获取数据:

Public Sub ReadDataAlerts()
    'Read the configuration for the Data Alerts from the RDB
    dtDataAlerts = GetRecordSet("SELECT DataAlertGroups.DataAlertGroup_UID, DataAlertGroups.EmailGroup_UID, DataAlertGroups.EmailTemplate_UID, EmailTemplates.EmailTemplate_CustomSubject, EmailTemplates.EmailTemplate_CustomMessage FROM (DataAlertGroups INNER JOIN EmailGroups ON DataAlertGroups.EmailGroup_UID=EmailGroups.EmailGroup_UID) INNER JOIN EmailTemplates ON DataAlertGroups.EmailTemplate_UID=EmailTemplates.EmailTemplate_UID")
End Sub

获取DataTable的例程

   Function GetRecordSet(SQLString As String) As DataTable

    'function used to run a query and return a disconnected DataTable

    Try


    'Create Dataset, Open Connection
    Dim dsPWC As New DataSet()
    Dim OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString, sqlConn)
    sqlConn.Open()

    'Fill the Dataset with the PlantWatchConfiguration Table
    OleDbDataAdapter1.Fill(dsPWC, "CollectorAlertGroups")

    'Create Table from Dataset and iterate data
        Dim DT As New DataTable
        Dim DTClone As New DataTable

    DT = dsPWC.Tables(0)
        DTClone = DT.Clone

    'Close Connection
        sqlConn.Close()

        Return DTClone

    Catch ex As Exception
        WriteToLog(ex.Message, "GetRecordSet")
    End Try
End Function

我知道SQL是正确的,因为我已经针对RDB运行它并产生结果。我在代码中有大量的日志记录文件,因此我确信数据库正确连接。 (和其他直接查询拉回数据一样好)

但我在GetRecordSet函数上做错了。我在想我没有正确地克隆和断开连接?

无论如何......我确信这很简单,因为我不是编码专家:)

感谢。

1 个答案:

答案 0 :(得分:1)

错误恰好是Clone method。它克隆数据表结构,而不是数据。

  

DataTable.Clone:克隆DataTable的结构,包括所有DataTable模式   和约束。

如果您需要数据,请使用Copy method

  

DataTable.Copy:复制此DataTable的结构和数据。

但是,正如我在评论中所说,你不需要以这种方式浪费你的电脑内存。 ADO.NET 基于断开连接的模型。由适配器填充的数据集中存在的数据表已经与数据库断开连接,您可以直接返回索引为零的表,而不会有任何无用的副本/克隆。