2013-12-10 2 views
1

7 winform을 기반으로 응용 프로그램을 개발했습니다. 데이터베이스가 MS Access에 있습니다. 연결 문자열에 대해 하나의 공통된 단일 클래스를 만들고 모든 winform에서 사용하려고합니다. 그래서, 나는 모든 형태의 연결 문자열을 복사하고 붙여 넣는 것을 피할 수 있습니다. 나는 그것을 어떻게하는지 모른다.연결 문자열 클래스를 만드는 방법은 무엇입니까?

+1

당신은 새로운 클래스를 필요로하지 않습니다 - 당신은 각 형태의 app.config에서 문자열을 당겨 수 있습니다. [(링크)] (http://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx) –

답변

7

당신의 app.config에서 연결 문자열이

<connectionStrings> 
     <add name="MyDBConnection" providerName="System.Data.SqlClient" 
      connectionString="Data Source=localhost;Initial Catalog=YourDB; Integrated Security=true" /> 
    </connectionStrings> 

을 제기 할 수 있습니다 그리고 당신은 그것을 좋아에 액세스 할 수 있습니다

System.Configuration.ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString; 

참조 : How to: Add an Application Configuration File to a C# Project

+0

APP.CONFIG에서 만들었으며 내가 한 말을 수행했습니다. 하지만 난 그것에 액세스하는 데 문제가 있습니다. 내 말은 "System.Configuration.ConfigurationManager.ConnectionStrings ["MyDBConnection "]. ConnectionString;" 이 전체 줄은 푸른 색이어야하지만 여전히 검은 색입니다. 그것은 내 응용 프로그램이이 줄을 읽을 수 없다는 것을 의미합니다. –

+0

@Dany, 프로젝트 참조를 마우스 오른쪽 단추로 클릭하고 System.Configuration에 대한 참조를 추가하십시오. – Habib

+0

기다려주십시오. 나는 이것을 시도하고있다. 한 가지 더, 내 데이터베이스는 OLEDB이므로이 코드에서 변경해야 할 사항은 무엇입니까? –

0

당신과 함께 클래스를 만들 수 있습니다 정적 멤버 및 속성

public class Utils 
{ 
    private static string connectionString = "Data Source=localhost;Initial Catalog=YourDB; Integrated Security=true"; 

    public static string ConnectionString 
    { 
     get 
     { 
      return connectionString; 
     } 
     set 
     { 
      connectionString = value; 
     } 
    } 
} 

그럼 당신은 그것을 좋아에 액세스 할 수 있습니다

string connString = Utils.ConnectionString; 
+0

개인적으로 오류가 발생했습니다. static connectionString = ""; 클래스, 구조체 또는 인터페이스 멤버 선언에서 유효하지 않은 토큰 '='이 표시됩니다. –

+0

@Dany 그 줄에 "string"을 잊어 버렸습니다. 미안합니다. 코드를 조금 업데이트했습니다. – ScottK

1

내가 일반적으로 클래스와 @scottk 같은 정적 멤버를 사용하지만, 그래서 전환 할 수 있습니다 나는 DEBUG 처리기 기호에 대한 검사를 마무리합니다 디버그 빌드에 대한 개발 데이터베이스. 나는 또한 정말 잔인한에도 불구하고, 가독성 OleDbConnectionStringBuilder 사용

public static class ConnectionStrings 
{ 
    #if DEBUG 
    public static string DBName 
    { 
     get 
     { 
      OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder 
      { 
       DataSource = @"C:\devDB.mdb", 
       Provider = "Microsoft.Jet.Oledb.4.0" 
      }; 

      return builder.ToString(); 
     } 
    } 
    #else 
    public static string DBName 
    { 
     get 
     { 
      OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder 
      { 
       DataSource = @"C:\prodDB.mdb", 
       Provider = "Microsoft.Jet.Oledb.4.0" 
      }; 

      return builder.ToString(); 
     } 
    } 
    #endif 
} 
+0

디버그 모드를 확인하는 것이 좋습니다. 때로는 프로덕션 테이블을 사용하여 디버깅해야하거나 여러 테스트 데이터베이스가있을 수 있습니다. 따라서 디버그 모드에있는 경우 사용할 데이터베이스를 선택하는 것이 좋습니다 (예 : 로그온 화면). – ScottK