【发布时间】: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