Ваш код не выполняет никаких SQL для базы данных. Код сам по себе не имеет никакого смысла, поскольку вы полностью неправильно используете адаптер данных.
Смысл адаптера данных заключается в агрегировании операций CRUD. Он имеет четыре свойства для командных объектов: SelectCommand
, InsertCommand
, UpdateCommand
и DeleteCommand
. Если вы понимаете basi c SQL, тогда назначение этих команд должно быть очевидным. Когда вы вызываете конструктор, которым вы являетесь, предоставленная вами команда назначается свойству SelectCommand
. Должно быть очевидно, что заполнение SelectCommand
оператором UPDATE
нецелесообразно.
Идея состоит в том, что вы предоставляете оператор SELECT
в SelectCommand
и вызываете Fill
для выполнения этого SQL и заполните DataTable
набором результатов запроса. Затем вы вносите изменения в эти данные по мере необходимости, добавляя, изменяя и удаляя строки, где это необходимо. Затем вы вызываете Update
на адаптере данных, и он выполняет InsertCommand
для каждой добавленной строки, UpdateCommand
для каждой измененной строки и DeleteCommand
для каждой удаленной строки, чтобы зафиксировать изменения, сделанные локально, обратно в базу данных. .
Если вы хотите правильно использовать адаптер данных, DataTable
и DataGridView
, вам нужно сначала внести изменения в DataTable
либо через пользовательский интерфейс, либо в коде, а затем использовать адаптер данных, чтобы правильно сохранить эти изменения обратно в базу данных.
Если вы хотите изменить данные непосредственно в базе данных, вам не следует использовать адаптер данных. Вы должны набрать ExecuteNonQuery
в самой команде. Обратите внимание, что это ничего не изменит в вашей сетке, поэтому вам нужно будет повторно заполнить его из базы данных, если вы хотите, чтобы он оставался актуальным.
По сути, вам нужно потратить некоторое время на чтение об ADO . NET, чтобы научиться делать это правильно.