Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# 声明和使用SqlParameter[]时出现问题。错误:使用未分配的局部变量';sqlparam';_C#_Asp.net_Ado.net - Fatal编程技术网

C# 声明和使用SqlParameter[]时出现问题。错误:使用未分配的局部变量';sqlparam';

C# 声明和使用SqlParameter[]时出现问题。错误:使用未分配的局部变量';sqlparam';,c#,asp.net,ado.net,C#,Asp.net,Ado.net,我必须声明一个SqlParameter[]。 它的大小是动态的,取决于下拉列表的选择。 我已经实现了一个如下的方法 protected void BindGrid() { SqlParameter[] sqlparam; string SP = string.Empty; if (ddlKPIType.SelectedIndex == 0)//For Overall { sqlparam = PrepareSqlParams(); }

我必须声明一个SqlParameter[]。 它的大小是动态的,取决于下拉列表的选择。 我已经实现了一个如下的方法

protected void BindGrid()
{
    SqlParameter[] sqlparam;
    string SP = string.Empty;

    if (ddlKPIType.SelectedIndex == 0)//For Overall
    {
        sqlparam = PrepareSqlParams();

    }
    else if (ddlKPIType.SelectedIndex == 1)//For Parameterwise
    {
        sqlparam = PrepareSqlParamsForParameterWise();

    }
    else if (ddlKPIType.SelectedIndex == 2)//For Measurement Criteria wise
    {
        sqlparam = PrepareSqlParamsForMeasurmentCriteriaWise();

    }


    DataSet dsReport = GetReportDataSet(sqlparam, SP);

    if (isDataSetValid(dsReport))
        gridMonthlyReport.DataSource = dsReport.Tables[0];
    gridMonthlyReport.DataBind();

}
但是在这段代码中,当我将sqlparam作为参数传递给GetReportDataSet()时,它显示了错误“使用未分配的局部变量'sqlparam'

方法:
PrepareSqlParams()
,
PrepareSqlParamsForParameterWise()和
preparesqlparamsformeasurentcriteriawise()
将返回SqlParameter[]

我在哪里犯了错误? 任何人请帮助我。
提前感谢。

sqlparam
不保证被分配,因为没有
else
子句。如果
ddlKPIType.SelectedIndex
为3或更大,
sqlparam
将不会被分配,因为
If else If
子句的任何分支都不会被执行。
您可以通过以下几种方式克服此问题:

  • 如果您确定它不能是3或更大,请插入一个抛出
    ArgumentOutOfRangeException的
    else
    子句
  • 如果您不确定它不能是3或更大,只需初始化
    sqlparam

  • sqlparam
    不保证被分配,因为没有
    else
    子句。如果
    ddlKPIType.SelectedIndex
    为3或更大,则不会分配
    sqlparam
    ,因为将不会执行
    If else If
    子句的任何分支。
    您可以通过以下几种方式克服此问题:

  • 如果您确定它不能是3或更大,请插入一个抛出
    ArgumentOutOfRangeException的
    else
    子句
  • 如果您不确定它不能是3或更大,只需初始化
    sqlparam

  • sqlparam nun的所有单元格都为空吗?sqlparam nun的所有单元格都为空吗?