【问题标题】:How can I add members to an array of SqlParameter?如何将成员添加到 SqlParameter 数组?
【发布时间】:2016-05-27 19:01:14
【问题描述】:

我有这个代码:

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”。被注释掉是因为我在 Intellisense 的可能性中没有发现“添加”之类的东西——或者任何看起来正确的东西。

我需要一个 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 数组中?

【问题讨论】:

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


【解决方案1】:

您可以使用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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-11-25
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多