2

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

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

让我更详细地解释一下。

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

4

2 回答 2

6

我认为没有简单的方法,您不能以编程方式更改整个连接字符串,DataSet因为它是为每个TableAdapter.

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

例如(假设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

在此处输入图像描述

于 2013-02-19T16:42:21.757 回答
0

实际上有一种更简单的方法来更改连接字符串。转到设置屏幕,其中连接字符串显示为连接字符串。首先标记并复制显示的连接字符串。然后将类型从连接字符串更改为字符串。字符串的文本将更改为包含 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 数据库;所以您的里程和要求可能会有所不同。

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

于 2016-07-27T19:24:54.497 回答