Member 13055644 Ответов: 1

Как избежать дублирования при вставке в C#


Привет друзья сначала я застрял в этой проблеме я не мог ее решить и я уже опубликовал здесь краткое я скопирую описание статуса "я объясню состояние после того, как я дам вам мою потребность
У меня есть DataGridView с флажком я проверяю строки после того, как нажимаю кнопку "Сохранить", и обычно строки я проверяю, что они должны быть вставлены в обе другие таблицы, но я нахожу, что просто строка, которая была вставлена дважды
Вторая проблема заключается в том, что мне нужны вставленные строки, которые я хочу видеть больше всего, когда нажимаю кнопку поиска, потому что они уже назначены в таблице
Вы найдете два интерфейса, которые обрабатывают "
Надеюсь, я хорошо описал свое состояние и заранее благодарю вас

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

//script search button
private void button4_Click(object sender, EventArgs e)
        {
            dataGridView2.Rows.Clear();
            Program.cmd.CommandText = "select * from bon_reception_marche where Date_reception between '" + dateTimePicker1.Value.Date + "' and '" + dateTimePicker2.Value.Date + "' and Id_marche in (select TOP 1 Id_marche from marche where Num_marche = '" + textBox1.Text + "')";
            Program.dr = Program.cmd.ExecuteReader();
            while (Program.dr.Read())
            {
                dataGridView2.Rows.Add(Program.dr[0], Program.dr[2], Program.dr[3], Program.dr[5], Program.dr[6], Program.dr[7], Program.dr[8], Program.dr[9], Program.dr[10], Program.dr[11], Program.dr[12]);
            }
            Program.dr.Close();
        }
        //script click datagridview
        private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 11/*myColumn*/ && e.RowIndex >= 0 /*myRow*/)
            {
                button1.Enabled = true;
            }
        }
        //script button save :
        private void button1_Click(object sender, EventArgs e)
        {
            int colIndex = dataGridView2.Columns["CheckBox"].Index;
            try
            {
                var rows = dataGridView2.Rows
                .Cast<DataGridViewRow>()
                .Where(row => row.Cells[colIndex].Value != null)
                .Where(row => (bool)row.Cells[colIndex].Value)
                .ToList();
                foreach (DataGridViewRow row in rows)
                    insertRowData(row);
                MessageBox.Show("c'est ajouté avec succés");
            }
            catch (FormatException)
            {
                MessageBox.Show("Only input numbers into the table!",
                "Only Numbers", MessageBoxButtons.OK);
            }
            catch (Exception)
            {
                MessageBox.Show("There was an error while saving!",
                "Error", MessageBoxButtons.OK);
            }
        }
        private void insertRowData(DataGridViewRow row)
        {
            double montantValue = Convert.ToDouble(row.Cells["Column7"].Value);
            int id_br_value = Convert.ToInt32(row.Cells["Column11"].Value);
            string check;
            if (checkBox1.Checked == true)
            {
                check = "O";
            }
            else
            {
                check = "N";
            }
            Program.cmd.Parameters.Clear();
            Program.cmd.CommandText = "insert into attachement_marche (Id_bon_reception_marche,Id_marche,Num_attachement,Date_debut,Date_fin,Flag_dernier,Montant,User_create,Date_create) values ( " + id_br_value + ",(select TOP 1 Id_marche from marche where Num_marche = '" + textBox1.Text + "'),'" + textBox3.Text + "','" + dateTimePicker1.Value.Date + "','" + dateTimePicker1.Value.Date + "','" + check + "'," + montantValue + ",'" + values.username + "','" + DateTime.Now.Date + "')";
            Program.cmd.ExecuteNonQuery();
        }

Patrice T

Репост одного и того же вопроса вам не поможет
Это просто расстроило здешних помощников.

1 Ответов

Рейтинг:
1

Patrice T

Никогда не создавайте SQL-запрос путем конкатенации с пользовательскими вводами, он называется "SQL-инъекция", он опасен для вашей базы данных и подвержен ошибкам.
Одна кавычка в имени - и ваша программа рухнет.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]