【问题标题】:Choosing connectionstring in VB.NET application at startup在启动时在 VB.NET 应用程序中选择连接字符串
【发布时间】:2011-02-12 20:16:18
【问题描述】:

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

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

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

【问题讨论】:

  • 您使用什么数据访问技术?普通的 ADO.NET? Linq-2-SQL?表适配器?
  • 另外,没有 SQL Server 2003。有 2000、2005 和 2008
  • 我没有自动生成的 TableAdapter 代码,但我认为您可以轻松修改它以停止它自动连接,然后给它一个 Connect 方法或类似方法。
  • 关于 ReadOnly 配置位,您可以将 Connectionstring 移动到用户部分吗?以下是相关信息:blogs.msdn.com/rprabhu/articles/433979.aspx
  • (ConnectionString)数据类型不能设置为用户范围,必须是应用范围。

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


【解决方案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>

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

【讨论】:

    【解决方案2】:

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

    无法在用户范围内定义 ConnectionString,只能在应用程序范围内定义。可以使用字符串代替 ConnectionString,程序可以正常运行,但在自动编译期间会导致大量 IDE 问题和 Visual Studio 异常。

    【讨论】:

      【解决方案3】:

      我不明白这个问题,或者说我看不到任何问题。
      您在执行此操作时是否有任何具体问题,或者只是想知道这是否是一个好的设计?

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

      【讨论】:

      • 问题是如何选择使用哪个连接字符串。我找不到要设置的正确属性。有关详细信息,请参阅编辑后的帖子。
      • 这仍然只允许我为单个 TableAadapter 设置连接字符串,而不是整个数据集
      猜你喜欢
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      相关资源
      最近更新 更多