繁体   English   中英

在运行时vs2010更改数据集连接字符串

[英]Changing dataset connectionstring at runtime vs2010

我找到了一个解决方案,该解决方案必须适用于vs2010的旧版本。 我想知道vs2010怎么做? 有人知道吗?

http://www.csharpbydesign.com/2008/01/overriding-dataset-settings-co.html

让我解释更多细节。

我有ac#生成的数据集。 如何更改连接字符串,以便可以将数据集与另一个(结构相同但填充不同的数据库)一起使用? 这必须在运行时发生,因为在编译时我不知道服务器或数据库的名称。 我正在使用vs2010和SQL Server 2008 R2 Express

我认为没有简单的方法,并且您不能以编程方式更改整个DataSet的Connection-String,因为它是为每个TableAdapter设置的。

由于Connection属性是internal (如果您的DAL在不同的程序集中),因此您需要使用/创建TableAdapter的局部类来更改连接字符串。 不要更改designer.cs文件,因为它将在设计器上进行下一次更改后自动重新创建。 要创建它,只需右键单击数据集并选择“显示代码”。

例如(假设TableAdapter名为ProductTableAdapter ):

namespace WindowsFormsApplication1.DataSet1TableAdapters
{
    public partial class ProductTableAdapter 
    {
        public string ConnectionString {
            get { return Connection.ConnectionString; }
            set { Connection.ConnectionString = value; }
        }
    }
}

现在,您可以轻松更改它:

var productTableAdapter = new DataSet1TableAdapters.ProductTableAdapter();
productTableAdapter.ConnectionString = someOtherConnectionString;

这是我的示例数据集和创建的文件DataSet1.cs的画面:

在此处输入图片说明

实际上,有一种更简单的方法来更改连接字符串。 转到“设置”屏幕,其中连接字符串显示为连接字符串。 首先标记并复制显示的连接字符串。 然后将类型从连接字符串更改为字符串。 字符串的文本将更改为包括xml。 然后将复制的连接字符串粘贴到xml文本上。 然后将范围从“应用程序”更改为“用户”。

当我想更改连接字符串时,请使用以下代码。

// assign the path to use to the variable fullpath (or whatever)
string newConnection = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", fullpath);            
Properties.Settings.Default.HootConnectionString = newConnection;
Properties.Settings.Default.Save();

就我而言,我有一个活动的全局数据集,因此我必须使数据由tableadapter重新读取。 并且,当然,您必须添加错误控制以确保数据库仍然存在。

您会注意到,这不会更改“应用程序设置”中显示的内容。 这些是默认值。

这适用于Access数据库。 因此您的里程和要求可能会有所不同。

编辑:警告。 事实证明,安装后,连接字符串可很好地用于打开和读取数据库内容,但它抱怨在尝试更新数据库时没有连接字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM