У меня есть унаследованное программное обеспечение для поддержки. В предыдущей версии использовался сторонний заменитель Datagridview, который несовместим с версиями Windows с Vista. При попытке установить Datagridviews я столкнулся с проблемой подключения к базе данных.Открытие SQL-соединения
Я пытаюсь создать небольшую программу для воспроизведения с подключением и SELECT за пределами исходного программного обеспечения, чтобы я мог лучше понять, что я делаю, и не пропуская полный процесс использования оригинального программного обеспечения, чтобы перейти к тестированию точка.
Private Shared Function GetData(ByVal sqlCommand As String) As DataTable
Dim table As New DataTable()
Dim connectionString As String = "Data Source=.\SQLExpress;Integrated Security=true;" _
& "AttachDbFilename=C:blah\blah\blah.mdf;User Instance=true;"
Using con = New SqlConnection(connectionString)
Using command = New SqlCommand(sqlCommand, con)
Using da = New SqlDataAdapter(command)
da.Fill(table)
End Using
End Using
End Using
Return table
End Function
Моя команда SQL является простой «Select * FROM Setup» и остальная часть программы образуют грузы, импорт, и DataGridView форматирование. Я не думаю, что это влияет на часть SQL и было бы громоздко включать сюда.
В результате получается закрытое соединение.
! [Connection Property] http://i.imgur.com/b5V3Qy5.png
Это скриншот моего SQLExpress который может помочь диагностировать проблемы с подключением.
! [SQL Свойство] http://i.imgur.com/bakBq5D.png
Я размыто имя компьютера в сером цвете, но я заметил, что там было другое имя компьютера в розовом цвете. Я не знаю, что это значит, кроме того, что эта база данных была первоначально создана на другом компьютере и была скопирована и вставлена.
Наконец это строка соединения, которая используется оригинальное программное обеспечение:
"Data Source=.\SQLExpress;AttachDbFilename=C:\blah\blah\blah.mdf;Trust_Connection=Yes;"
Я также попытался:
"Data Source=.\SQLExpress;AttachDbFilename=C:\blah\blah\blah.mdf;Trusted_Connection=Yes;User Instance=true"
Наконец, это мое исключение:
"An attempt to attach an auto-named database for file C:\blah\blah\blah.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."
I получил мои альтернативные строки подключения от www.connectionstrings.com.
вам необходимо открыть соединение перед заполнением DataTable – Ric
я добавил 'con.Open()' и я все еще получаю такое же исключение только гораздо быстрее. – ZL1Corvette
Из MSDN -> _ Метод Fill неявно открывает соединение, которое использует DataAdapter, если обнаруживает, что соединение еще не открыто. Если Fill открыл соединение, он также закроет соединение, когда Fill закончена. – Steve