首页 > 解决方案 > 这是从数据库获取数据到 datagridview 的最有效方法吗?

问题描述

我是初学者,希望知道什么是最有效的内存/处理器查询方式。我是否正确放置使用和结束使用?仍然需要新的 OleDbCommand 吗?请评论您的建议和提示以改进我的代码:)

    Dim con As New OleDbConnection
 Dim dbProvider As String = "Provider=Microsoft.ACE.OLEDB.12.0;"
      Dim dbSource As String = ("Data Source=" & Application.StartupPath & "\DBbms.accdb")
       con.ConnectionString = dbProvider & dbSource
       

Using connection As New OleDbConnection(con.ConnectionString)
        Try

            Dim query As String = "Select * from Household"
            'cmd = New OleDbCommand(query, con)
            Dim da As New OleDbDataAdapter(query, con)

            connection.Open()
            Dim dt As New DataTable
            da.Fill(dt)


            DataGridView1.DataSource = dt.DefaultView


        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Using

标签: vb.netvisual-studioms-accessoledb

解决方案


将用户界面代码与数据库代码分开。如果您想Catch在 UI 代码中显示消息框,请执行此操作。

您可能希望将连接字符串设置为类级别变量,以便其他数据库代码可以使用它。

该命令也包含在Using块中。注意行尾的逗号Connection

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim dt As DataTable
    Try
        dt = GetHouseholdData()
    Catch ex As Exception
        MsgBox(ex.Message)
        Exit Sub
    End Try
    DataGridView1.DataSource = dt.DefaultView
End Sub

Private HHConStr As String = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={Application.StartupPath}\DBbms.accdb"

Private Function GetHouseholdData() As DataTable
    Dim dt As New DataTable
    Using con As New OleDbConnection(HHConStr),
            cmd As New OleDbCommand("Select * from Household", con)
        con.Open()
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
    Return dt
End Function

推荐阅读