在启动时在VB.NET应用程序中选择connectionstring

时间:2010-04-27 12:20:16

标签: sql-server vb.net connection-string

我有一个连接到SQL Server 2003的VB.NET应用程序。在服务器上有两个数据库,MyDatabase和MyDatabase_Test。我想要做的是在程序启动时显示一个对话框,让用户选择使用哪个数据库。我的想法是创建一个新表单作为设置此属性的starup表单,然后启动主表单。

目前,在应用程序配置文件中指定了connectionstring。如果我可以在该文件中指定两个不同的连接字符串以供选择,那将是最好的,但是现在它也可以被其他解决方案所接受,例如将两个连接字符串硬编码到启动表单中。

编辑:在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中获取该字符串的值。

3 个答案:

答案 0 :(得分: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>

启动时,根据用户选择填充一个读取一个设置或另一个设置的全局变量

答案 1 :(得分:1)

经过多次考虑,删除设置文件以删除ReadOnly属性似乎是最佳解决方案。

无法在用户范围定义ConnectionString,仅在应用程序范围内定义。可以使用字符串而不是ConnectionString,程序运行正常,但在自动编译期间会导致很多IDE问题和Visual Studio异常。

答案 2 :(得分:0)

我不明白这个问题,或者说我看不出任何问题 你这样做有什么特别的问题,或者只是想知道它是否是一个好的设计?

在配置文件中有多个连接字符串,然后在启动时选择它们应该可以正常工作。我可能做的唯一不同之处就是你如何描述它我可能会将主窗体保留为启动窗体,然后立即弹出一个模态对话框,用户选择连接。