system.invalidationexception:填充:selectCommand.Connection属性尚未



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

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

数据库名称为smsenabler.mdb

要连接的表是ProfessorListTable

该表包含的字段

ID|LastName|FirstName|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.invalidationexception:Fill:selectCommand.Connection属性尚未初始化。在System.Data.Common.DbDataAdapter.GetConnection3(DbDataAdapter适配器,IDbCommon命令字符串方法),在System.Data.DbDataAdapter.FillInternal(DataSet数据集,DataTable[]数据表,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand,CommandBehavior行为)dataTables,Int32 startRecord,Int32 maxRecords,IDbCommand命令,CommandBehavior behavior)在C:\Users\lenovo\Desktop\GUI references\WindowsApplication1\WindowsApplication1\ProfessorList.vb:line17

第17行

showRecords()

它给了我一个根本没有记录的输出。它只显示一个写有字段的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:dataSomeDB.mdb"
.Open
End With
End Sub

如果断开与服务器的连接,则必须使用showRecords方法打开连接。

当您希望在关闭连接的情况下执行命令时,会出现此错误。

最新更新