我不断收到此错误,这是在我创建新表单时开始的 我正在使用Visual Basic 2015
Public Class Form2
Private MARKSDataAdapter As New SqlDataAdapter
Private MARKSCmdBuilder As New SqlCommandBuilder
Private MARKSDataTable As New DataTable
Private MARKSConnection As New SqlConnection
Private MyRowPosition As Integer = 0
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MARKSConnection.ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=c:\users\jonn\documents\visual studio 2015\Projects\SMART\SMART\SMART.mdf; Integrated Security=True"
MARKSConnection.Open()
End Sub
Private Sub comMkSubj_TextChanged(sender As Object, e As EventArgs) Handles comMkSubj.TextChanged
MARKSDataAdapter = New SqlDataAdapter("Select * from Students", MARKSConnection)
MARKSCmdBuilder = New SqlCommandBuilder(MARKSDataAdapter)
MARKSDataAdapter.Fill(MARKSDataTable)
Dim i, n As Integer
n = MARKSDataTable.Rows.Count
Dim y As Integer = 5
For i = 1 To n Step 1
Dim NewLabel As New Label
Dim NewTxt As New TextBox
NewLabel.Name = "Label" & i
NewLabel.AutoSize = True
NewLabel.Text = MARKSDataTable.Rows(MyRowPosition)("Name")
NewLabel.Location = New Point(0, y)
NewTxt.Name = "Txt" & i
NewTxt.Size = New Size(50, 20)
NewTxt.Location = New Point(170, y - 3)
NewTxt.TextAlign = HorizontalAlignment.Center
mkPanel.Controls.Add(NewTxt)
mkPanel.Controls.Add(NewLabel)
MyRowPosition += 1
y += 35
Next
LabelHeading.Text = comMkClass.Text + " " + comMkTerm.Text + ", " + txtMkYear.Text + ": " + comMkSubj.Text
End Sub
End Class
在表格1中,相同语法的连接工作正常
但是当我移至表格2时,它不会加载
它在MARKSDataAdapter.Fill(MARKSDataTable)
System.Data.dll中发生类型'System.InvalidOperationException'的异常,但未在用户代码中处理
其他信息:ConnectionString属性尚未初始化。
答案 0 :(得分:1)
我建议进行以下更改
只需在变量的范围内声明变量,而不是在表单的范围内创建新实例
所以而不是:
Private MARKSConnection As New SqlConnection
只要做
Private MARKSConnection As SqlConnection
然后在实例化数据适配器之前,让我们尝试
MARKSConnection = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=c:\users\jonn\documents\visual studio 2015\Projects\SMART\SMART\SMART.mdf; Integrated Security=True")
然后在表单加载中注释掉这两行。 DataAdapter处理打开和关闭连接,因此在这种情况下不需要MARKSConnection.Open()
。