ReportViewer使用的DataSet不使用App.Config中ConnectionString的凭据

时间:2012-06-26 18:40:27

标签: c# sql-server reportviewer rdlc

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

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

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

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

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

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

有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

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

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

这很有效。虽然它有点蹩脚,但它肯定证明当你使用向导创建TableAdapter,并从App.Config中选择现有连接时(从向导的Connections下拉框中),它实际上并不加载该连接运行时来自app.config的字符串。有谁知道为什么,或者真正的方法是什么?我不想为每个报告为每个DataSet手动设置每个TableAdapter的连接字符串。