el_tot93 Ответов: 2

Флажок обновить только с кодом


я хочу, чтобы обновить запись, что я могу проверить только если я обновить все таблицы с мой код, что я и пытаюсь делать с этим кодом, если я это должно быть что-то вроде ( где ID=@ID), что как я могу сделать это, чтобы сделать его обновление проверить запись только не первый код, только этот код обновить первую строку ???

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

using (SqlConnection con = new SqlConnection("Connection"))
            {
                con.Open();
                

                foreach (DataGridViewRow item in dataGridView1.Rows)
            {
                if (bool.Parse(item.Cells[0].Value.ToString()))
                {
                        using (SqlCommand command1 = new SqlCommand("UPDATE indebtedness SET username=@username WHERE id=@id", con))
                        {
                            command1.Parameters.AddWithValue("@username", username.Text);
                            command1.Parameters.AddWithValue("@id", dataGridView1.Rows[0].Cells[15].Value);
                            command1.ExecuteNonQuery();
                        }
                
            
                }
                MessageBox.Show("Successfully ....");
            }

2 Ответов

Рейтинг:
17

Maciej Los

Если вы хотите обновить информацию username основанный на id- ты идешь в правильном направлении. Небольшое улучшение вашего кода должно помочь.

//...
if (bool.Parse(item.Cells[0].Value))
{
    using (SqlCommand command1 = new SqlCommand("UPDATE indebtedness SET username=@username WHERE id=@id", con))
    {
        command1.Parameters.AddWithValue("@username", username.Text);
        command1.Parameters.AddWithValue("@id", item.Cells[1].Value); //read id from second column; change it to your needs                           
        command1.ExecuteNonQuery();
    }
}
//...


[РЕДАКТИРОВАТЬ]
В случае, если у вас нет документов, вы в беде! Представьте себе, что вы установили следующий рекорд:
RowNo: Selected Name
0:     true     Maciej
1:     false    Maicej
2:     true     Macije
3:     false    Maciej
4:     true     Maciek

И в текстовом поле вы набрали:: "Maciek"

Вы можете использовать инструкцию update следующим образом:
using (SqlCommand command1 = new SqlCommand("UPDATE indebtedness SET username=@username WHERE usename=@prevname", con))
{
    command1.Parameters.AddWithValue("@username", username.Text);
    command1.Parameters.AddWithValue("@prevname", item.Cells[1].Value); //read previous name from second column
    command1.ExecuteNonQuery();
}


После выполнения вышеуказанного кода имена будут изменены на:
RowNo: Selected Name
0:     true     Maciej => Maciek
1:     false    Maicej
2:     true     Macije => Maciek
3:     false    Maciej
4:     true     Maciek => Maciek


Примечание: не совсем понятно, чего вы пытаетесь достичь и на основе каких критериев.


RickZeeland

Точно, как раз собирался предложить это, 5d !

Maciej Los

Спасибо тебе, Рик!

el_tot93

большое вам спасибо за помощь, Мацей Лос ..

Maciej Los

Всегда пожалуйста.

Рейтинг:
0

RickZeeland

Смотрите примеры здесь: Инструкция обновления SQL[^] например

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

Конечно в вашем коде вы должны использовать параметризованные запросы:
using (SqlCommand command1 = new SqlCommand("UPDATE indebtedness SET username=@username WHERE id=@id", con))
{
  command1.Parameters.AddWithValue("@username", username.Text);
  command1.Parameters.AddWithValue("@id", userid.Text);
  command1.ExecuteNonQuery();
}

Если у вас нет поля id или первичный ключ в вашей таблице смотрите статью здесь: Создание первичных ключей - SQL Server | Microsoft Docs[^]


el_tot93

но я не знаю, как использовать WHERE в этом коде

RickZeeland

Смотрите обновленное решение :)

el_tot93

братан, я не имею имя пользователя у меня флажок, я хочу, чтобы обновить записи, которые имеют реальный проверять в флажок

RickZeeland

Йо человек, тогда ваш дизайн базы данных не очень хорош, рекомендуется всегда иметь поле ID, которое является уникальным. Я призываю вас добавить его к вашему столу !

el_tot93

смотрите обновление кода обновление кода только в первой строке

RickZeeland

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

Maciej Los

5ed!