0

我有一个用 C# 编写的 Windows 窗体应用程序,该应用程序的一部分有一个使用 RDLC 报告和 ReportViewer 控件的报告表单。

为了创建报表,我首先为每个报表创建了一个 DataSet 并向 DataSet 添加了一个 TableAdapter。我使用 TableAdapter 向导为报表指定查询,并选择了一个已在 App.Config 中定义并在应用程序其他地方使用的 ConnectionString。

在我的开发盒上一切正常,但是当我将应用程序移动到数据库密码与我的开发盒不同的生产环境时,除了“sa”密码无效之外,报告都无法运行。

现在,密码已在生产中 app.config 的 ConnectionString 中正确设置。我在应用程序的其他任何地方都使用相同的 ConnectionString,包括登录,所以我知道 sa 密码设置正确。

在我看来,当我使用向导将 TableAdapter 添加到 DataSet 时,它要求我选择一个连接(我选择了 app.config 中已经存在并在应用程序其他地方使用的现有连接),它必须将它存储在某个地方,而不是总是从 app.config 中读取它。还是我误解了什么?

我只希望每个带有 TableAdapter 的 DataSet 能够使用来自 app.config 的连接字符串,其中包括用户名和密码。

有谁知道这是怎么做到的吗?

4

1 回答 1

0

在调用 TableAdapter 上的 Fill 方法之前,我通过执行以下操作解决了这个问题......

this.EMPLOYEETableAdapter.Connection.ConnectionString =
  ConfigurationManager.ConnectionStrings["MCLabor"].ToString();

这行得通。不过这有点蹩脚,它确实证明了当您使用向导创建 TableAdapter 并从 App.Config 中选择现有连接(从向导中的 Connections 下拉框中)时,它实际上并没有加载该连接运行时来自 app.config 的字符串。有谁知道为什么,或者处理这个问题的真正方法是什么?我不喜欢为每个报表的每个 DataSet 手动设置每个 TableAdapter 的连接字符串。

于 2012-06-26T18:56:01.143 回答