H M Mori Ответов: 2

Разве это плохая идея-запускать SQL-запросы типа insert update в цикле for?


if (value > 0)
{
    for(int i=0;i<mydatagrid.Rows.Count;i++)
    {
            SqlCommand cc = new SqlCommand("insert into store values(@sbno,@vno,@box,@qty,@pcs,@remark,@avail)", cn);
        cc.Parameters.AddWithValue("@sbno", sbno);
        cc.Parameters.AddWithValue("@vno", vno);
        cc.Parameters.AddWithValue("@box",Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()));
        cc.Parameters.AddWithValue("@qty",Int32.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()));
        cc.Parameters.AddWithValue("@pcs",);
        cc.Parameters.AddWithValue("@remark",);
        cc.Parameters.AddWithValue("@avail", );
        cc.ExecuteNonQuery();
    }
   MessageBox.Show(nstdbox + " Boxes Stored To Store");
}


Что я уже пробовал:

это плохо или нормально? Я не знаю практики по этому поводу
Я делаю это неправильно?

PIEBALDconsult

Этот путь плох. Правильный путь-это хорошо.

2 Ответов

Рейтинг:
1

PIEBALDconsult

Основная техника для этого:

Set up the command
Add the parameters -- do not use AddWithValue
Iterate the rows
  Set the parameter values
  Execute the command


И делать нет сделайте что-нибудь вроде: Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString())


[no name]

И не делайте ничего, понравилось: int32 значение.Синтаксический анализ(dataGridView1.Строки[я].Ячейки[0].Значение.Метод toString())

я должен сделать это, потому что я хочу целочисленное значение, есть ли другой способ сделать это?

PIEBALDconsult

Конечно, просто позвольте системе позаботиться об этом за вас.

David_Wimbley

Я думаю, что проблема опа в том, что вы туманно указываете ему маршрут, а также говорите ему, чего не делать, но не предлагаете то, что он должен делать. "просто позвольте системе позаботиться об этом за вас" не очень полезно.

Рейтинг:
0

Bryian Tan

Как насчет того, чтобы использовать хранимую процедуру и передать DataTable (строки сетки) в качестве параметра и сделать вставку/обновление в хранимой процедуре? Вот пример, который может оказаться полезным.

Отправка DataTable в хранимую процедуру[^]


[no name]

извините но нет это не так asp.net вопрос.