@SpiderHulk

Программа на C# добавляет, но не редактирует и не удаляет данные из базы данных?

Сделал в Visual Studio на С# программу предназначенную для записи, редактирования и удаления данных из однотабличной базы данных Microsoft SQL Server

Программа успешно записывает новые данные в таблицу базы данных, но при попытке удалить или отредактировать данные в какой-либо из строк таблицы появляется сообщение: "Для обновления требуется действительный UpdateCommand при передачи коллекции DataRow с измененными строками." То есть в таблицу самого приложения в DataGridView изменения записываются, но при попытке сохранить это изменение кликом по кнопке появляется это сообщение, а в базе данных ничего не меняется

При попытке удалить всю строку целиком клавишей из BindingNavigator никаких сообщений не появляется, строка в таблице приложения удаляется, но в базе данных ничего не меняется

В итоге на данный момент функционирует лишь внесение новых данных в базу данных

Часть кода программы:

namespace WindowsFormsApplication1
    {public partial class Form1 : Form
    {
    public Form1()
    {
        InitializeComponent();
    }
 
    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'spisok_zakazovDataSet.Table_1' table. You can move, or remove it, as needed.
        this.table_1TableAdapter.Fill(this.spisok_zakazovDataSet.Table_1);
 
    }
 
    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            this.Validate();
            this.table1BindingSource.EndEdit();
            this.table_1TableAdapter.Update(this.spisok_zakazovDataSet.Table_1);
            MessageBox.Show("Update successful");
        }
        catch (System.Exception ex)
        {
            MessageBox.Show("Update failed");
        }
    }
}


Программа + база данных целиком: https://yadi.sk/d/8licJpe13Hnq5a
  • Вопрос задан
  • 1503 просмотра
Пригласить эксперта
Ответы на вопрос 1
во-первых, проблема с удалением может быть связана с тем, что в других таблицах есть ссылки на удаляемые записи и в таком случае нужно настроит каскадное удаление. Насчёт обновления... я бы сделал обновление через SQL-запрос. UPDATE. Просто берёте новые значения из ячеек вашей таблицы, вставляете их в строку запроса, и всё.
string sql = "UPDATE AGR SET SHORTNAME_AGR=\'" + dataGridView1.Rows[lastSelectedRowIndex].Cells[0].Value.ToString() + "\', NAME_AGR=\'" + dataGridView1.Rows[lastSelectedRowIndex].Cells[1].Value.ToString()+"\' " +
                    "WHERE ID_AGR=(select AGR.ID_AGR from AGR where AGR.SHORTNAME_AGR=\'"+lastSelectedRow+"\')";

где lastSelectedRowIndex - выделенная пользователем строка. lastSelectedRowI - последнее значение, идентифицирующее запись (у меня это короткое имя агрегата).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы