Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#winforms中的数据库之间切换_C#_Sql_Database - Fatal编程技术网

在C#winforms中的数据库之间切换

在C#winforms中的数据库之间切换,c#,sql,database,C#,Sql,Database,我制作了一个基于数据库数据生成报告的应用程序 我的应用程序的功能是正确的,但我有以下问题:我的客户机有两个相同的数据库——一个用于测试,另一个用于实际工作 我的应用程序应该同时处理两个数据库(它应该有一个“切换机制”),但我不知道如何实现它 我知道我可以在连接字符串之间切换,但问题是在我的报告中,我使用绑定到一个数据库的数据集 是否可以用两个数据库中的数据填充这些数据集(因为数据库在模式中是相同的,所以应该是可能的),以及如何完成,或者我必须使用重复的数据集/报表对 我在VS2010和SQLSe

我制作了一个基于数据库数据生成报告的应用程序

我的应用程序的功能是正确的,但我有以下问题:我的客户机有两个相同的数据库——一个用于测试,另一个用于实际工作

我的应用程序应该同时处理两个数据库(它应该有一个“切换机制”),但我不知道如何实现它

我知道我可以在连接字符串之间切换,但问题是在我的报告中,我使用绑定到一个数据库的数据集

是否可以用两个数据库中的数据填充这些数据集(因为数据库在模式中是相同的,所以应该是可能的),以及如何完成,或者我必须使用重复的数据集/报表对

我在VS2010和SQLServer2005中使用C#,在我的报告中使用.rdlc。
谢谢。

理想情况下,您应该能够在一个位置更改连接字符串,这将影响整个项目

仅当从一个位置获取连接字符串时,此操作才有效。将其保存在
app.config
文件中


请参阅,了解如何存储和读取app.config文件中的连接字符串。

您已经了解了人们实现存储库模式的原因,或者至少是它的一个版本

您确实需要将业务逻辑从数据库中删除,这样它就与数据库无关了。它不应该只关心数据的来源

从你所说的话中可以看出,这意味着你的客户端只需要更改用于数据库访问的app.config连接字符串

如果是这样的话,我知道这将需要一些工作,最好的办法是使用一个singleton模式类型的类来控制对数据层的所有数据访问


使用已知的接口,您可以使用工厂模式在运行时创建对开发或实时数据库的访问(可能是基于app.config设置,或者甚至是一个测试类,它根本没有数据库访问权限,只是返回硬编码的测试数据。

它不会是
web.config
,因为它是一个桌面应用程序,而是
app.config
。谢谢你删除了它-我还没有完成输入。你想在什么时候进行切换?是吗有条件的?应用程序有两个表单-登录表单和主表单。登录表单包含一个组合框,用户可以在其中选择要使用的数据库。因此应在该点进行切换(组合框的项更改)。之后,用户输入其用户名和密码,如果您也需要对数据库进行访问控制,应用程序将检查用户是否有权限查看这些数据库基于凭据,然后除了Ranhiru的答案之外,您需要在app.config中为连接字符串保留userid和key之间的映射,以便您可以授权用户。我解决了授权部分,这很好,并且我按照Ranhiru的建议(在设计时)在app.config中更改了连接字符串,现在我只需要创建一个函数,在运行时对其进行更改,应该就是这样