无法使用 Visual Studio 通过 VB.NET 中的连接字符串手动访问本地 SQL 数据库

Can't access Local SQL database manually by connection string in VB.NET using Visual Studio

我有一个项目设置了 3 个独立的 tables。我使用了 Visual Studio.

的内置设计器

table个包含

  1. 学生
  2. 课程
  3. 每门课程的测试

所有 table 共享一个学号。

当我将它们“拖放到”表单上时,我可以毫无问题地获取和访问由 Visual Studio 自动生成的不同 table 适配器和相应的绑定源。我还能够使用查询构建器从每个 table.

中获取我需要的数据

当我尝试通过连接字符串手动访问数据库时出现问题。

我收到这个错误:

Cannot attach file local path\HovedDatabase.mdf as database Outcomes because the file is already in use for database local path\HovedDatabase.mdf

这是我的代码:

Private Sub FormPrøver3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'TODO:   This line of code loads data into the 'StudentDataSet.StudentTabell' table. You can move, or remove it, as needed.
    Me.StudentTabellTableAdapter.Fill(Me.StudentDataSet.StudentTabell)
    Me.StudentTabellTableAdapter.Connection.Close()

    Get_Data_Manualy_Fag()

End Sub

Private Sub Get_Data_Manualy_Fag()
    Try
        'Create variabals for inputcontainer
         Dim Studnr As String = Me.StudentnrLabel1.Text

        'Create a connection to the DataBase
        Dim myConn As SqlConnection
        myConn = New SqlConnection("Initial Catalog=OutComes;Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\HovedDatabase.mdf;Integrated Security=True")

        'Create a Command object.
        Dim myCmd As SqlCommand
        myCmd = myConn.CreateCommand
        myCmd.CommandText = "SELECT Fag FROM Fag3Tabell WHERE Fag = @Studnr"
        myCmd.Parameters.AddWithValue("@Studnr", Studnr)

        'Open the connection.
        myConn.Open()

        'Process the answer
        Dim myreader As SqlDataReader
        myreader = myCmd.ExecuteReader

        'Traverse the DataSet and Display :
        Dim i As Integer = 0
        Do While myreader.Read()
            Me.ComboBox1.Items.Add(myreader.GetString(i))
            i = i + 1
        Loop

        'Close the connection
        myConn.Close()

        'Handle errors
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

我用类似的 LocalSQL 数据库建立了一个类似的项目。除了使用相同的 tables.

创建数据库外,我在 Visual Studio 中什么也没做

这里我通过手动连接字符串连接数据库没问题

我的问题是:为什么我在第一个项目中无法使用连接字符串访问本地数据库?

您还没有发布其他连接字符串,但看起来 AttachDbFilename 可能是问题所在。数据库将已经附加,此选项仅用于单用户模式(仅限一个连接)。 最好的办法是将数据库永久附加到 LocalDB 实例,如果这是您一直使用的实例。