Починаю переробляти свій код, щоб використовувати "найкращі" практики в моєму додатку 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]);
}