C# 在运行时vs2010更改数据集连接字符串
我找到了一个解决方案,它必须适用于比vs2010更旧的版本。我想知道如何为vs2010做到这一点?有人知道吗 让我再详细解释一下C# 在运行时vs2010更改数据集连接字符串,c#,sql,dataset,C#,Sql,Dataset,我找到了一个解决方案,它必须适用于比vs2010更旧的版本。我想知道如何为vs2010做到这一点?有人知道吗 让我再详细解释一下 我有一个c#生成的数据集。如何更改连接字符串,以便将数据集与另一个(结构相同但填充方式不同)数据库一起使用?这必须在运行时发生,因为我在编译时不知道服务器或数据库名称。我正在使用vs2010和SQL Server 2008 R2 Express我认为没有简单的方法,您无法以编程方式更改整个数据集的连接字符串,因为它是为每个TableAdapter设置的 您需要使用/
我有一个c#生成的数据集。如何更改连接字符串,以便将数据集与另一个(结构相同但填充方式不同)数据库一起使用?这必须在运行时发生,因为我在编译时不知道服务器或数据库名称。我正在使用vs2010和SQL Server 2008 R2 Express我认为没有简单的方法,您无法以编程方式更改整个
数据集
的连接字符串,因为它是为每个TableAdapter
设置的
您需要使用/创建TableAdapter
的分部类来更改连接字符串,因为connection
属性是internal
(如果DAL位于不同的程序集中)。不要更改designer.cs文件,因为在对设计器进行下一次更改后,将自动重新创建该文件。要创建它,只需右键单击数据集并选择“显示代码”
例如(假设TableAdapter
命名为ProductTableAdapter
):
现在,您可以轻松更改它:
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数据库;因此,您的里程数和要求可能会有所不同
编辑:警告。事实证明,安装连接字符串后,可以很好地打开和读取数据库内容,但它会抱怨在尝试更新数据库时没有连接字符串 你什么意思?你的意思是你想在运行时从一个连接开始读取,然后在读的中间切换连接?你应该注意到你是指通过DeSung创建的一个强类型的数据集。谢谢提姆的帮助。当我试图添加代码连接时,找不到连接。@user1304232:那么您是否创建了一个与数据集设计器同名的类?
partial
属性和正确的命名空间很重要。如果不确定它们的名称,请查看…designer.cs
文件。编辑我的答案以显示屏幕截图。明白了。这就是我需要的。谢谢
// 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();