声明和使用SqlParameter[]的问题.错误:使用未分配的局部变量'sqlparam'
本文关键字:分配 局部变量 sqlparam 问题 SqlParameter 错误 声明 | 更新日期: 2023-09-27 18:02:47
我必须声明一个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() and
PrepareSqlParamsForMeasurmentCriteriaWise()
将返回SqlParameter[].
我哪里出错了?谁来帮帮我。
sqlparam
不能保证被赋值,因为没有else
子句。如果ddlKPIType.SelectedIndex
为3或更大,则不会分配sqlparam
,因为if-else if
子句的任何分支都不会被执行。
您可以通过以下几种方法来克服这个问题:
- 如果您确定它永远不会大于或等于3,则插入
else
子句并抛出ArgumentOutOfRangeException
- 如果你不确定它永远不会是3或更大,只需初始化
sqlparam
。