如何修复 vb.net Visual Studio 2022 中的“ConnectionString 属性尚未初始化”?

问题描述 投票:0回答:1

我正在使用 Visual Studio .NET Framework 和 vb.net 编程语言,我已经努力修复我的错误大约一周了。我使用 MS Access 数据库 (.accdb) 作为我的数据库。

模块1.vb:

Imports System.Data.OleDb
Module Module1
    Public cn As New OleDbConnection
    Public cm As New OleDbCommand
    Public dr As OleDbDataReader
    Sub ConnectToDatabase()
        Try
            Dim startupPath As String = AppDomain.CurrentDomain.BaseDirectory
            Dim connectionString As String = $"Provider=Microsoft.JET.OLEDB.4.0;Data Source={startupPath}\OSA_Records.accdb"
            Using cn As New OleDbConnection(connectionString)
                cn.Open()
            End Using

        Catch ex As Exception
            Console.WriteLine("ConnectToDatabase Error: " & ex.ToString())
            MsgBox(ex.Message, vbCritical)
        End Try
    End Sub
End Module

我也已经在“frmMain.vb”加载事件中调用了该方法 frmMain.vb:

    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ConnectToDatabase()
        LoadRecordsStudent()
        LoadRecordsViolation()
        LoadRecordsProgram()
        LoadRecordsSection()
        LoadRecordsAcademicYear()
        AutoSuggestStudent()
    End Sub

我已经尝试了所有可能与我的问题相关的 YouTube 视频,但它仍然不起作用,我希望有人可以帮助我解决我的问题。

如果我仍然需要提供任何有助于解决我的问题的相关信息,请告诉我。非常感谢!

vb.net connection-string visual-studio-2022 ms-access-2016 .net-4.8
1个回答
0
投票

在你的模块中,有这一行:

Public cn As New OleDbConnection

声明一个字段,创建一个不带连接字符串的新连接对象,并将该对象分配给该字段。然后你就得到了这个代码:

Using cn As New OleDbConnection(connectionString)
    cn.Open()
End Using

这实际上是声明一个不同的局部变量,使用连接字符串创建一个新的连接对象,将该对象分配给该变量,打开连接,然后再次关闭它。这些对您的字段和分配给它的连接对象都没有任何影响。

首先,如果您只是要在第二个片段中创建一个新对象,那么为什么要在第一个片段中创建一个新对象呢?不要创建您无意使用的新对象。

至于问题,事实上,当您认为您正在使用具有相同名称的字段时,您在方法中引入了局部变量。虽然您使用的架构不是很好,但我们暂时继续使用它。在这种情况下,您应该更改第一个片段以使用连接字符串创建连接对象:

Public cn As New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=|DataDirectory|\OSA_Records.accdb")

然后,在您的方法中,使用该字段和该对象:

Try
    cn.Open()
    cn.Close()
Catch
    '...
End Try

请注意,在连接字符串中使用

"|DataDirectory|"
作为文件夹路径,这允许您将连接字符串放置在某处,而无需使用代码来设置数据库文件夹路径。它将解析为与 WinForms 应用程序的
Application.StartupPath
相同的值,这就是您应该在代码中使用的值。

© www.soinside.com 2019 - 2024. All rights reserved.