/ / Параметри SQL в циклі? - c #, asp.net, sql-сервер, ado.net

Параметри SQL для циклу? - c #, asp.net, sql-сервер, ado.net

Починаю переробляти свій код, щоб використовувати "найкращі" практики в моєму додатку asp.net.

Один із великих рефакторів, які я роблю, змінюєтьсяте, як я використовую SQL (ado.net) у своїй програмі. Я "змінив усі запити, в яких я отримував інформацію, засновану на введенні користувача, здійснюватися через збережені процедури, беручи вхідні параметри для зменшення навантаження на додаток і зберігання елементів бази даних на рівні бази даних. Я також змінюю оператор вставки, я дозволяю Користувач повинен робити на базі даних, щоб використовувати Параметри, а не брати їх безпосередньо зі списку рядків.

Однак я помітив, що я повторював свій код в цілому 23 рази. Мій код кричить про якусь петлю, але я не можу думати, як це зробити. Я дивився на петлі foreach, але це не працювало.

Я долучив свій код нижче. Чи може хтось із вас мені допомогти, давши мені правильний цикл для передового досвіду та прикладу його використання (будь ласка, не пишіть для мене код, як я хотів би це зрозуміти), але покажіть мені, як працює цикл .

Код:

com.Parameters.AddWithValue("@H0", list[0]);
com.Parameters.AddWithValue("@H1", list[1]);
com.Parameters.AddWithValue("@H2", list[2]);
com.Parameters.AddWithValue("@H3", list[3]);
com.Parameters.AddWithValue("@H4", list[4]);
com.Parameters.AddWithValue("@H5", list[5]);
com.Parameters.AddWithValue("@H6", list[6]);
com.Parameters.AddWithValue("@H7", list[7]);
com.Parameters.AddWithValue("@H8", list[8]);
com.Parameters.AddWithValue("@H9", list[9]);
com.Parameters.AddWithValue("@H10", list[10]);
com.Parameters.AddWithValue("@H11", list[11]);
com.Parameters.AddWithValue("@H12", list[12]);
com.Parameters.AddWithValue("@H13", list[13]);
com.Parameters.AddWithValue("@H14", list[14]);
com.Parameters.AddWithValue("@H15", list[15]);
com.Parameters.AddWithValue("@H16", list[16]);
com.Parameters.AddWithValue("@H17", list[17]);
com.Parameters.AddWithValue("@H18", list[18]);
com.Parameters.AddWithValue("@H19", list[19]);
com.Parameters.AddWithValue("@H20", list[20]);
com.Parameters.AddWithValue("@H21", list[21]);
com.Parameters.AddWithValue("@H22", list[22]);
com.Parameters.AddWithValue("@H23", list[23]);

Відповіді:

4 для відповіді № 1

Я б скористався нормальним for цикл так:

for(int index = 0; index < list.Length; index++)
{
com.Parameters.AddWithValue("@H" + index.ToString(), list[index]);
}

Однак я б рекомендував вам робити ні використовувати AddWithValue оскільки це може мати непередбачувані наслідки. Замість цього зробіть щось подібне:

com.Parameters.Add("@H" + index.ToString(), SqlDbType.Int).Value = list[index];

1 для відповіді № 2

це слід зробити, якщо припустити, що список - це Список, а не масив

for(int i = 0 ; i < list.Count ; i++)
{
com.Parameters.AddWithValue(string.Format("@H{0}",i),list[i]);
}