2014-01-06 5 views
0

У меня есть унаследованное программное обеспечение для поддержки. В предыдущей версии использовался сторонний заменитель 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.

+0

вам необходимо открыть соединение перед заполнением DataTable – Ric

+0

я добавил 'con.Open()' и я все еще получаю такое же исключение только гораздо быстрее. – ZL1Corvette

+1

Из MSDN -> _ Метод Fill неявно открывает соединение, которое использует DataAdapter, если обнаруживает, что соединение еще не открыто. Если Fill открыл соединение, он также закроет соединение, когда Fill закончена. – Steve

ответ

0

Вам не хватает команды Open().

con.Open() 

Полный список кодов. (Также хорошая идея - обернуть свой код в блок Try.... End Try).

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) 
     conn.Open() 
     Using command = New SqlCommand(sqlCommand, con) 
      Using da = New SqlDataAdapter(command) 
       da.Fill(table) 
      End Using 
     End Using 
    End Using 

    Return table 

End Function 
+0

Я до сих пор получаю сообщение об ошибке «Попытка прикрепить автоимя ...». Он говорит, что привязан, как будто я пытаюсь создать базу данных или таблицу, когда на самом деле я пытаюсь ее открыть. Или я слишком много читаю в этой ошибке? – ZL1Corvette

+1

Я нашел опечатку после добавления 'con.Open()'! Благодарю. – ZL1Corvette

Смежные вопросы