2010-04-27 3 views
3

SQL Server 2003에 연결되어있는 VB.NET 응용 프로그램이 있습니다. 서버에는 MyDatabase 및 MyDatabase_Test라는 두 개의 데이터베이스가 있습니다. 내가하고 싶은 것은 프로그램이 시작될 때 사용자가 사용할 데이터베이스를 선택하게하는 대화 상자를 보여주는 것이다. 내 생각은이 속성을 설정하고 기본 폼을 시작하는 시작 폼으로 새 폼을 만드는 것입니다.시작시 VB.NET 응용 프로그램에서 연결 문자열 선택

현재 연결 문자열은 응용 프로그램 구성 파일에 지정되어 있습니다. 가장 좋은 방법은 선택할 파일에서 두 개의 다른 연결 문자열을 지정할 수 있지만 두 개의 연결 문자열을 시작 양식에 하드 코딩하는 것과 같은 다른 솔루션에서도 사용할 수 있습니다.

편집은 다음 dataset.xsd 파일에서 관련 부분

<Connections> 
      <Connection AppSettingsObjectName="MySettings" AppSettingsPropertyName="MyDatabase_ConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="MyDatabase_ConnectionString(MySettings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.MyProgram.My.MySettings.GlobalReference.Default.MyDatabase_ConnectionString" Provider="System.Data.SqlClient" /> 
</Connections> 

로하지만 그것은 런타임에 어떻게 변경합니까 것 같다? 가장 가까운 내가 찾을 수있는 모든 단일 TableAdapter에 대해 사용되는 연결을 변경하고 있지만 그것은 아주 최적의 것 같지 않습니다.

EDIT2 : 시작시 모달 대화 상자가 더 좋겠지 만 데이터베이스 연결이 시작되기 전에 어디에서 시작해야합니까?

EDIT3 : 결과적으로 설정 파일에서 ReadOnly를 제거하여 "해결했습니다". 이것은 파일이 자동으로 생성 될 때마다 제거되므로 최적이 아닙니다.

EDIT4 : 더 나은 솔루션은 연결 문자열 대신 사용자 범위 문자열을 사용하여 데이터 집합을 연결하고이 문자열의 값을 두 개의 응용 프로그램 범위가 지정된 ConnectionStrings에서 가져온 것입니다.

+0

어떤 데이터 액세스 기술을 사용하고 있습니까? 일반 ADO.NET? Linq-2-SQL? 테이블 어댑터? – Jeremy

+0

또한 SQL Server 2003도 없습니다. 2000, 2005 및 2008이 있습니다. – Jeremy

+0

TableAdapter에 대한 자동 생성 코드가 없지만 자동으로 연결을 중지하고 바로 연결을 수정할 수 있다고 생각했을 것입니다. Connect 메소드 또는 이와 유사한 메소드를 제공하십시오. –

답변

1

ReadOnly 속성을 제거하기 위해 설정 파일을 해킹하는 것이 더 좋은 해결책 인 것 같습니다.

응용 프로그램 범위에서만 사용자 범위에서 ConnectionString을 정의 할 수 없습니다. ConnectionString 대신 문자열을 사용할 수도 있습니다. 프로그램은 정상적으로 실행되지만 자동 컴파일 중에는 많은 IDE 문제와 Visual Studio 예외가 발생합니다.

0

나는이 질문을 이해하지 못하거나 오히려 어떤 질문도 볼 수 없다.
이 작업을 수행하는 데 특별한 문제가 있습니까? 아니면 정상적인 디자인인지 궁금하십니까?

구성 파일에 여러 개의 연결 문자열이있는 경우 시작시 해당 연결 문자열을 선택하면 정상적으로 작동합니다. 필자가 설명하는 방식과 다른 점은 시작 폼으로 기본 폼을 유지 한 다음 사용자가 연결을 선택하는 모달 대화 상자를 곧바로 팝업하는 것과 같은 작업을 수행한다는 것입니다.

+0

문제는 사용되는 연결 문자열을 선택하는 방법입니다. 설정할 올바른 속성을 찾을 수 없습니다. 자세한 내용은 수정 된 게시물을 참조하십시오. – MatsT

+0

여기를 참조하십시오 : http://stackoverflow.com/questions/364962/assign-connection-string-to-table-adapter-from-session –

+0

이것은 여전히 ​​전체 데이터 세트가 아닌 개별 TableAadapters에 대한 연결 문자열을 설정할 수있게 해줍니다 – MatsT

1

매번 사용하기 전에 바로 TableAdapter.Connection.ConnectionString 속성을 설정할 수 있습니다. 연결 문자열을 정의 당신의 app.config의 섹션을 찾아 또 다른 추가 한 설정 또는 사용자의 선택에 따라 다른 밖으로 읽고 전역 변수를 채우고 시작시

<connectionStrings> 
     <add name="Live" 
     connectionString="Data Source=svr;Initial Catalog=Live;..." 
     providerName="System.Data.SqlClient" /> 
     <add name="Dev" 
     connectionString="Data Source=svr;Initial Catalog=Dev;..." 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

관련 문제