Visual studio system.invalidoperationexception:Fill:selectCommand.Connection属性尚未初始化

Visual studio system.invalidoperationexception:Fill:selectCommand.Connection属性尚未初始化,visual-studio,ms-access,database-connection,Visual Studio,Ms Access,Database Connection,我正在用Visual basic连接MS Access数据库。不幸的是,我无法将数据库中的记录链接到visual basic 我的数据库位于C:\Users\lenovo\Desktop\GUI references\WindowsApplication1\WindowsApplication1\bin\Debug 数据库名称为smsenabler.mdb 要连接的表是ProfessorListTable 该表包含以下字段: ID |姓|名| MI |部门|受雇年份 我表格上的代码如下所示:

我正在用Visual basic连接MS Access数据库。不幸的是,我无法将数据库中的记录链接到visual basic

我的数据库位于C:\Users\lenovo\Desktop\GUI references\WindowsApplication1\WindowsApplication1\bin\Debug

数据库名称为smsenabler.mdb

要连接的表是ProfessorListTable

该表包含以下字段:

ID |姓|名| MI |部门|受雇年份

我表格上的代码如下所示:

    Imports System.Data.OleDb

Public Class ProfessorList
    Dim con As OleDbConnection

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub

    Private Sub ProfessorList_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim con As OleDbConnection = New OleDbConnection
            con.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ..\smsenabler.mdb"
            con.Open()

            showRecords()
            con.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
    Public Sub showRecords()
        Dim dt As New DataTable
        Dim ds As New DataSet
        ds.Tables.Add(dt)

        Dim da As New OleDbDataAdapter("Select * from ProfessorListTable", con)
        da.Fill(dt)

        Dim myRow As DataRow

        For Each myRow In dt.Rows
            ListView1.Items.Add(myRow.Item(0))
            ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myRow.Item(1))
            ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myRow.Item(2))
            ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myRow.Item(3))
            ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myRow.Item(4))
            ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myRow.Item(5))
        Next

    End Sub
错误消息

system.invalidoperationexception:Fill:selectCommand.Connection属性尚未初始化。在System.Data.Common.DbDataAdapter.GetConnection3DbDataAdapter适配器上,在System.Data.Common.DbDataAdapter.FillInternalDataSet数据集上的IDbCommand命令字符串方法,DataTable[]datatables,Int32 StartRecords,Int32 maxRecords,String srcTable,IDbCommand,CommandBehavior行为在System.Data.Common.DbDataAdapter.FillDataTable[]dataTables、Int32 StartRecords、Int32 maxRecords、IDbCommand命令、CommandBehavior行为at System.Data.Common.DbDataAdapter.FillDataTable dataTable位于THESIS_GUI.ProfessorList.ProfessorList_LoadObject sender,事件参数e位于C:\Users\lenovo\Desktop\GUI references\WindowsApplication1\WindowsApplication1\ProfessorList.vb:line17

第17行

展示唱片


它给我一个没有任何记录的输出,它只显示一个写有字段的GUI。谢谢。

一个建议是确保您的连接“con”可用于所有子例程。我以前使用过全局变量来防止需要打开和关闭连接,这在过去会导致问题。我们都采用了类似的方法,但这里有一些代码我已经去除了错误陷阱、调试辅助工具等:

Global cnLocalData  As ADODB.Connection
Public Sub Get_Connection()
    Set cnLocalData = New ADODB.Connection
    With cnLocalData
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Data Source") = "C:\data\SomeDB.mdb"
        .Open
    End With
End Sub