如何将成员添加到SqlParameter数组?

时间:2016-05-27 19:01:15

标签: c# arrays sql-server stored-procedures sqlparameter

我有这段代码:

private SqlParameter[] GetSPParams()
{
    SqlParameter[] spParams = null;
    int loopNum = 1;
    while (ParamExists(loopNum))
    {
        //spParams.
        new SqlParameter()
        {
            ParameterName = GetParamName(loopNum),
            SqlDbType = GetSqlDbType(loopNum),
            Value = GetParamValue(loopNum)
        };
        loopNum++;
    }
    return spParams;
}

...正如您所见,它总是返回null。

" spParams。"被注释掉了,因为我发现没有"添加"或智能感知的可能性 - 或任何看起来正确的东西。

我需要一个SqlParameter数组,因为这最终会传递给运行存储过程的方法:

private void RunStoredProc()
{
    SqlParameter[] spparams = GetSPParams();
    DataTable dtSPResults = SPRunnerSQL.ExecuteSQLReturnDataTable(comboBoxCPSStoredProcs.Text,
        CommandType.StoredProcedure,
        spparams
    );
    rowsReturned = dtSPResults.Rows.Count;
    labelRowsReturned.Text = String.Format("Rows returned: {0}", rowsReturned);
    if (rowsReturned > 0)
    {
        dataGridView.DataSource = dtSPResults;
    }
}

. . .

public static DataTable ExecuteSQLReturnDataTable(string sql, CommandType cmdType, params SqlParameter[] parameters)

那么如何将SqlParameter值添加到SqlParameter数组?

1 个答案:

答案 0 :(得分:2)

您可以使用List<SqlParameter>代替array,然后您应该可以添加新元素。然后,只返回一个调用方法ToArray()的数组,将集合转换为array

private SqlParameter[] GetSPParams()
{
    var spParams = new List<SqlParameter>();
    int loopNum = 1;
    while (ParamExists(loopNum))
    {
        spParams.Add(new SqlParameter()
        {
            ParameterName = GetParamName(loopNum),
            SqlDbType = GetSqlDbType(loopNum),
            Value = GetParamValue(loopNum)
        });
    }
    return spParams.ToArray();
}

现在,如果你需要添加nem成员,你可以从SqlParameter派生,但作为documentation,这个类是sealed