2010-04-27 29 views
3

我有一個連接到SQL Server 2003的VB.NET應用程序。在服務器上有兩個數據庫MyDatabase和MyDatabase_Test。我想要做的是在程序啓動時顯示一個對話框,讓用戶選擇使用哪個數據庫。我的想法是創建一個新窗體作爲設置此屬性的Starup窗體,然後啓動主窗體。啓動時在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,但看起來並不是最佳的。編輯2:我同意啓動時的模式對話框會更好,但我會在哪裏啓動它,以便它在數據庫連接啓動之前完成?

EDIT3:最終我通過從設置文件中刪除ReadOnly來「解決」它。這將在每次文件自動生成時被刪除,因此它不是最優的。

編輯4:一個更好的解決方案似乎是使用用戶範圍字符串而不是連接字符串來鏈接數據集並從兩個應用程序範圍的ConnectionStrings中獲取該字符串的值。

+0

您使用的是什麼數據訪問技術?純ADO.NET? LINQ-2-SQL?表適配器? – Jeremy 2010-04-27 12:59:31

+0

此外,沒有SQL Server 2003.有2000年,2005年和2008年 – Jeremy 2010-04-27 13:00:06

+0

我沒有爲TableAdapter自動生成的代碼,但我會認爲你可以很容易地修改它,以阻止它自動連接,然後只是給它一個連接方法或類似的。 – 2010-04-27 13:20:51

回答

1

經過一些更多的考慮駭客的設置文件,以刪除ReadOnly屬性看起來像最好的解決方案。

無法在用戶範圍內定義ConnectionString,只能在應用程序範圍內定義。可以使用字符串而不是ConnectionString,程序運行良好,但在自動編譯期間會導致很多IDE問題和Visual Studio異常。

0

我不明白這個問題,或者說我看不出任何問題。
你是否遇到過這樣的問題,或者只是想知道它是否是好的設計?

在配置文件中有多個連接字符串,然後在啓動時選擇它們應該可以正常工作。我唯一可能做的不同於你如何描述它,我可能會將主窗體保留爲啓動窗體,然後執行一些操作,如用戶選擇連接時立即彈出一個模式對話框。

+0

問題是如何選擇使用哪個連接字符串。我找不到要設置的正確屬性。有關更多詳細信息,請參閱編輯的帖 – MatsT 2010-04-27 12:52:31

+0

請參閱:http://stackoverflow.com/questions/364962/assign-connection-string-to-table-adapter-from-session – 2010-04-27 13:13:47

+0

這仍然只是允許我設置單個TableAadapters的連接字符串,而不是整個數據集 – MatsT 2010-04-27 15:28:30

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> 

在啓動時,填充全局變量讀出一個設置或根據用戶選擇其他的