2014-01-06 3 views
0

유지 관리 소프트웨어를 상속 받았습니다. 이전 버전에서는 Vista의 Windows 버전과 호환되지 않는 타사 Datagridview 대체품을 사용했습니다. 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 명령은 간단한 "설정에서 선택 *"이고 나머지 프로그램은 폼이로드, 수입 및 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;" 

나는 또한 시도 :

마지막이 원래의 소프트웨어를 사용하는 연결 문자열입니다

"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 : 마지막으로

"Data Source=.\SQLExpress;AttachDbFilename=C:\blah\blah\blah.mdf;Trusted_Connection=Yes;User Instance=true" 

이 내 예외 www.connectionstrings.com에서 내 대체 연결 문자열을 받았습니다.

+0

당신은 데이터 테이블 – Ric

+0

을 채우기 전에 연결을 열 필요가 내가 추가 한'con.Open()'와 나는 여전히 훨씬 빠르게 같은 예외를 얻을. – ZL1Corvette

+1

MSDN에서 -> _The Fill 메서드는 연결이 아직 열려 있지 않으면 DataAdapter에서 사용중인 Connection을 암시 적으로 엽니 다. 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