Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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# &引用;已经有一个打开的DataReader与此命令关联,必须先关闭该命令";_C#_Sql_Asp.net_Sql Server - Fatal编程技术网

C# &引用;已经有一个打开的DataReader与此命令关联,必须先关闭该命令";

C# &引用;已经有一个打开的DataReader与此命令关联,必须先关闭该命令";,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我在这里的代码返回错误“已经有一个与此命令关联的打开的DataReader,必须先关闭它。”并且我已经在我的web.config上添加了代码“MultipleActiveResultSets=true” ReportViewer1.Visible = true; ReportViewer1.ProcessingMode = ProcessingMode.Local; var sqlConnection = new SQLConnectionStr

我在这里的代码返回错误“已经有一个与此命令关联的打开的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();

您正试图用相同的
SqlCommand
同时使用
SqlDataAdapter
SqlDataReader

        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();
SqlDataAdapter
将结果集加载到
DataSet
DataTable
SqlDataReader
用于在结果集上一次循环一条记录,记录集样式。它们是两种不同的方法,用于访问具有两种不同意图的数据,两者都使用是没有意义的

        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();
如果您试图加载
dsReport
,请删除

        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();
SqlDataReader drReport;
drReport = cmdReport.ExecuteReader();
dsReport.Tables[0].Load(drReport);
drReport.Close();
因为您已经使用适配器加载了它

        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();
myDataAdapter.Fill(dsReport);

如果要填充数据集,请尝试此代码

        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();
    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();

但如果你还想要什么,请描述它,更多;)

此行的目的是什么
dsReport.Tables[0]。加载(drReport)您已经用填充加载了该表。以前的执行者也是这样。
        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();