2014-01-06 154 views
0

我已經繼承了要維護的軟件。以前的版本使用第三方Datagridview替代品,它與Vista中的Windows版本不兼容。在試圖將Datagridviews放入時,我遇到了連接到數據庫的問題。打開SQL連接

我想製作一個小程序,在原始軟件之外連接和選擇,以便我可以進一步瞭解我在做什麼,而無需通過使用原始軟件進行測試的全過程點。

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設置」,該計劃的其餘部分的形式加載,進口,和DataGridView的格式。我不認爲它會影響SQL部分,並且在這裏包含會很麻煩。

這會導致看起來是封閉的連接。

![連接屬性] 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." 

我從www.connectionstrings.com獲得了我的備用連接字符串。

+0

你需要填充數據表 – Ric

+0

前打開連接我接着說:con.Open()'和我仍然得到同樣的例外只有更快。 – ZL1Corvette

+1

從MSDN - > _如果Fill方法發現連接尚未打開,則隱式地打開DataAdapter正在使用的Connection。如果填充打開了連接,填充完成後它也將關閉連接._ – 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