2014-05-20 4 views
2

Visual Studio 2010에서 Windows 응용 프로그램을 만듭니다. 그런 다음 데이터베이스를 추가합니다. 데이터베이스 속성은 다음과 같습니다ConnectionString이 올바르지 않습니다.

이름 : C : \ USERS \ VISUAL STUDIO 2010 \ PROJECTS \ \ WINDOWSAPPLICATION4 \ WINDOWSAPPLICATION4 DATABASE1.MDF

ConnectionString을 \ 관리자 \ 서류 :. 데이터 원본 = \ SQLEXPRESS ; 인 AttachDBFilename = "C : \ 사용자 \ 관리자 \ 문서가 프로젝트 \ 비주얼 스튜디오 2010 \ \ WindowsApplication4 \ WindowsApplication4 Database1.mdf \"; 통합 보안 = 진정한; 사용자 인스턴스 = TRUE

제공 : .NET Framework 데이터 공급자 SQL S 용 erver

유형 : 마이크로 소프트 SQL 서버

버전 : 10.00.5500

가이 코드 쓰기 :

Dim cn As New ADODB.Connection() 
    cn.Open("provider= SQLOLEDB.1;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Administrator\documents\visual studio 2010\Projects\WindowsApplication4\WindowsApplication4\Database1.mdf;User Instance=True") 
    Dim rs As New ADODB.Recordset() 
    rs.Open(("Select from TB Where Surname = Stylianou "), cn) 
    While Not rs.EOF 
     MsgBox("here") 
    End While 

그리고 디버거는 말한다 : 잘못된 연결 문자열

답변

4
속성

몇 점 :

  • 예 : 데이터베이스
  • 당신이 SqlConnectionStringBuilder Class
  • 값이 정말로 전달해야 더 안정적으로 연결 문자열을 만들 수 있습니다
  • 당신이 (가 SQL 서버에 최적화해야 System.Data.SqlClient 클래스)를 사용하지 않는에서 읽기의 레코드) 매개 변수 (SQL 주입 공격을 피하는 데 도움이되며 SQL 삽입 문자열에 값을 직접 쓰는 대신 값에 아포스트로피가 있으면 작동하게합니다). 다음) (나는 당신이 확신) 당신이에 대해 자세히 알아 보려면이 어떤 명령이있는 경우

    Imports System.Data.SqlClient 
    
    ' ... 
    
    Private Sub LoadData() 
        Dim cnsb As New SqlConnectionStringBuilder 
        cnsb.DataSource = ".\SQLEXPRESS" 
        cnsb.AttachDBFilename = "C:\Users\Administrator\documents\visual studio 2010\Projects\WindowsApplication4\WindowsApplication4\Database1.mdf" 
        cnsb.IntegratedSecurity = True 
        cnsb.UserInstance = True 
    
        Using conn As New SqlConnection(cnsb.ConnectionString()) 
         'TODO: Put in the actual column names you want returned 
         Dim sql As String = "SELECT [Column1], [Column2] FROM [TB] WHERE [Surname] = @Surname" 
         Using sqlCmd As New SqlCommand(sql, conn) 
          'TODO: Use the actual .SqlDbType and .Size for the [Surname] column 
          sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Surname", .SqlDbType = SqlDbType.NVarChar, .Size = 50, .Value = "Stylianou"}) 
          Dim rdr As SqlDataReader = sqlCmd.ExecuteReader() 
          While rdr.Read() 
           ' do something with the results 
           MsgBox(String.Format("Col1={0}, Col2={1}", rdr.GetString(0), rdr.GetString(1))) 
          End While 
         End Using 
    
        End Using 
    
    End Sub 
    

    이 :

당신은 같은 것을 가질 수 있습니다. Visual Studio에서 커서를 명령 이름에 놓고 F1 키를 누릅니다.

편집 : 연결 문자열이 작동하지 않는 이유는 파일 이름에 공백이있는 것일 수 있습니다. SqlConnectionStringBuilder가 제공하는 값을 보면 자동으로 파일 이름을 큰 따옴표로 묶습니다. 그러나 코드 대신 위의 스타일로 코드를 사용하는 것이 좋습니다.