MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как добавить данные в базу MySQL из DataGrid C#?"
Answer 903757
Проблема в том, что вы в коде никак не задействуете DataGrid. Вы создаете пустой DataSet, заполняете его данными из базы, и потом эти же самые данные записываете назад в базу. Правильно нужно делать так:
Допустим, мы хотим сделать DataGrid, привязанную к DataTable. Сразу в конструкторе окна создадим DbDataAdapter и DataTable (нет необходимости это делать при каждом обновлении, так как структура данных и запросы то не меняются), и сохраним их в полях класса окна.
DbDataAdapter adapter; DataTable dt; public MainWindow() { InitializeComponent(); MySqlConnection conn = DBUtils.GetDBConnection(); string table = "brands"; string sql = "SELECT * FROM "+table; adapter = new MySqlDataAdapter(sql, conn); conn.Open(); MySqlCommandBuilder myCommandBuilder = new MySqlCommandBuilder(adapter as MySqlDataAdapter); adapter.InsertCommand = myCommandBuilder.GetInsertCommand(); adapter.UpdateCommand = myCommandBuilder.GetUpdateCommand(); adapter.DeleteCommand = myCommandBuilder.GetDeleteCommand(); dt = new DataTable(); adapter.Fill(dt); //загрузка данных datagrid.ItemsSource = dt.DefaultView; //привязка к DataGrid }
Теперь, когда нужно сохранить данные (я не рекомендую сохранять при каждом изменении строки, так как будет слишком много запросов в базу, лучше создать кнопку "Сохранить"), выполним Update на той же DataTable.
private void ButtonSave_Click(object sender, RoutedEventArgs e) { adapter.Update(dt); }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.