Не удается получить доступ к локальной базе данных SQL вручную с помощью строки подключения в VB.NET использование Visual Studio

#sql #vb.net #connection-string

#sql #vb.net #строка подключения

Вопрос:

У меня есть проект, созданный с 3 отдельными таблицами. Я использовал встроенный конструктор из Visual Studio.

Таблицы содержат

  1. Для студентов
  2. Курсы
  3. Тесты в каждом курсе

Все таблицы имеют общий studentnumber.

У меня нет проблем с получением и доступом к данным с помощью различных адаптеров таблиц и соответствующих источников привязок, автоматически создаваемых Visual Studio, когда я «перетаскиваю» их в формы. Я также могу использовать конструктор запросов для получения необходимых мне данных из каждой таблицы.

Моя проблема возникает, когда я пытаюсь получить доступ к базе данных вручную через строку подключения.

Я получаю эту ошибку:

Не удается прикрепить локальный путь к файлу HovedDatabase.mdf в качестве базы данных, поскольку файл уже используется для локального пути к базе данных 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. Я ничего не делал в Visual Studio, кроме создания базы данных с теми же таблицами.

Здесь у меня нет проблем с подключением к базе данных через строку подключения вручную.

Мой вопрос таков: почему я не могу получить доступ к локальной базе данных с помощью строки подключения в первом проекте?

Ответ №1:

Вы не опубликовали свою другую строку подключения, но, похоже AttachDbFilename , это может быть проблемой. База данных уже будет подключена, эта опция предназначена только для использования в однопользовательском режиме (только одно подключение). Лучше всего постоянно подключать базу данных к экземпляру LocalDB, если это то, что вы используете все время.

Комментарии:

1. Вторая строка подключения была точно такой же, как и первая, с другим именем файла. Только что создал реплику. Спасибо, что разъяснили мне это. Я думал, что это может быть что-то вроде этого.