我的代码返回错误“已经有一个与此命令关联的打开的DataReader必须先关闭。”我已经在我的web.config
上添加了代码“MultipleActiveResultSets = true” ReportViewer1.Visible = true;
ReportViewer1.ProcessingMode = ProcessingMode.Local;
var sqlConnection = new SQLConnectionStrings();
var conReport = new SqlConnection(sqlConnection.strConn);
var cmdReport = new SqlCommand();
var myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = cmdReport;
SqlDataReader drReport;
DataSet dsReport = new DataSet();
//PerfLogDataSet();
cmdReport.CommandType = CommandType.Text;
cmdReport.Connection = conReport;
conReport.Open();
cmdReport.CommandText = baseQuery;
drReport = cmdReport.ExecuteReader();
myDataAdapter.Fill(dsReport); //where the error occurs
dsReport.Tables[0].Load(drReport);
drReport.Close();
conReport.Close();
答案 0 :(得分:1)
您尝试同时使用SqlDataAdapter
和SqlDataReader
同时使用SqlCommand
。
SqlDataAdapter
会将结果集加载到DataSet
或DataTable
。 SqlDataReader
用于循环遍历结果集一次记录,记录集样式。它们是使用两种不同意图访问数据的两种不同方法,使用它们是没有意义的。
如果您尝试加载dsReport
,请删除
SqlDataReader drReport;
drReport = cmdReport.ExecuteReader();
dsReport.Tables[0].Load(drReport);
drReport.Close();
正如您已使用
加载适配器一样myDataAdapter.Fill(dsReport);
答案 1 :(得分:0)
如果要填充数据集,请尝试使用此代码...
ReportViewer1.Visible = true;
ReportViewer1.ProcessingMode = ProcessingMode.Local;
var sqlConnection = new SQLConnectionStrings();
var conReport = new SqlConnection(sqlConnection.strConn);
var cmdReport = new SqlCommand(baseQuery);
var myDataAdapter = new SqlDataAdapter(cmdReport,sqlConnection );
DataSet dsReport = new DataSet();
conReport.Open();
myDataAdapter.Fill(dsReport);
conReport.Close();
但是如果你想要其他任何东西,请描述它,更多;)