2016-05-27 2 views
-5

У меня этот код:Как добавить элементы в массив 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; 
} 

... который, как вы можете видеть, возвращает нулевое значение всегда.

«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?

+4

Вы можете создать «Список », а затем использовать 'ToArray' – Valentin

+3

. Мне кажется, вам нужно прочитать о параметрах значения таблицы. https://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx – Valentin

ответ

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.

+1

https://msdn.microsoft.com/ru-ru/library/system.data.sqlclient.sqlparameter (v = vs.110) .aspx. Класс запечатан. – Valentin

+1

Извините, ребята, я не знал, что «параметры» запечатаны. Спасибо! –

+1

вы не можете получить из запечатанного класса, но вы все еще предлагаете получить. – Valentin

Смежные вопросы