Удаление строки из базы sqlite

Messages
1,701
Reaction score
288
Website
tehadm.ru
Удаление выделенной строки:
C#:
private void DeleteButton_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                // Получаем ID выбранной записи из скрытого столбца 'id'
                int columnIndex = 0; // индекс скрытого столбца 'id'
                string columnName = dataGridView1.Rows[0].Cells["name"].Value.ToString(); // имя ячейки столбца name
                int selectedId = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[columnIndex].Value);

                // Запрашиваем подтверждение на удаление записи
                DialogResult result = MessageBox.Show($"Вы хотите удалить запись {columnName}?", "Удаление", MessageBoxButtons.YesNo);

                if (result == DialogResult.Yes)
                {
                    // Удаляем запись из базы данных
                    string queryString = "DELETE FROM listEven WHERE id = @id;";
                    using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + dbPath + ";Version=3;"))
                    {
                        SQLiteCommand command = new SQLiteCommand(queryString, connection);
                        command.Parameters.AddWithValue("@id", selectedId);

                        try
                        {
                            connection.Open();
                            command.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Удалить запись не получилось: " + ex.Message, "Ошибка");
                            return;
                        }
                    }

                    // Удаляем строку из DataGridView
                    dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                    MessageBox.Show("Запись удалена.", "Success");
                }
            }
            else
            {
                MessageBox.Show("Выберите строку.", "Ошибка");
            }
        }
 
Last edited:
Удаление нескольких выделенных строк:
C#:
private void DeleteButton_Click(object sender, EventArgs e)
{
    DialogResult result = MessageBox.Show("Are you sure you want to delete selected rows?", "Confirmation", MessageBoxButtons.YesNo);

    if (result == DialogResult.Yes)
    {
        string queryString = "DELETE FROM users WHERE name = @name AND age = @age";
        using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + dbPath + ";Version=3;"))
        {
            SQLiteCommand command = new SQLiteCommand(queryString, connection);
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            List<int> rowsToDelete = new List<int>();

            foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                int currentIndex = row.Index;
                string selectedName = row.Cells[0].Value.ToString();
                string selectedAge = row.Cells[1].Value.ToString();

                command.Parameters.AddWithValue("@name", selectedName);
                command.Parameters.AddWithValue("@age", selectedAge);

                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();

                    if (!rowsToDelete.Contains(currentIndex))
                    {
                        rowsToDelete.Add(currentIndex);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    connection.Close();
                }
            }

            rowsToDelete.Sort();
            rowsToDelete.Reverse();

            foreach (int index in rowsToDelete)
            {
                dataGridView1.Rows.RemoveAt(index);
            }

            MessageBox.Show("Записи удалены");
        }
    }
}
 
Back
Top