我有许多具有相同结构的数据库,我设计了一个与数据库设计相匹配的数据集。使用在设计时询问并在app.config中定义的connectionStrings可以轻松连接到数据库。但是在尝试在运行时更改数据库时会出现问题。我找不到任何非反射解决方案来处理它。有没有其他方法可以在运行时动态更改数据集的连接字符串,或者至少创建具有不同连接字符串的数据集!!!
答案 0 :(得分:0)
您正在使用DataSet
填充TableAdapter
,您可以轻松修改TableAdapter
连接字符串,如下所示:
myTableAdapter.Connection.ConnectionString = connectionString;
希望这会有所帮助:)
答案 1 :(得分:0)
gzaxx答案不起作用,仅仅是因为不同的DBMS与不同的ADO.NET提供程序一起工作,这些提供程序可能相互兼容也可能不兼容。它背后有很多理论,我不会在这个文本框中输入所有这些,但你需要了解TableAdapters是主要问题,而不是DataTable。您的业务和UI层通常只与DataTables通信,因为在创建表列时您已正确使用相应的数据类型,因此几乎所有DBMS都具有相同的结构。因此,理论上,如果Typed DataSet可以提供一种方法来为每个DataTable附加多个Adapters,您可以为您支持的每个DBMS添加一个适配器,同时保持DataTable结构相同。
我自己不得不在一个有点大的项目中处理这个问题,对我来说唯一可行的解决方案是将我的数据访问分离到一个单独的项目(类lib),然后为我支持的每个DBMS创建一个这样的DLL 。希望能帮助您开始使用此功能。