none
Сохранение изменений в БД RRS feed

  • Вопрос

  • Здравствуйте. Отображаю БД в DataGrid вот так:

    private void Btn_open (object sender, RoutedEventArgs e)
            {
                SqlConnection Conn = new SqlConnection("Server=localhost;Integrated Security=true;Initial Catalog=MyDataBase;");
                SqlDataAdapter daTable = new SqlDataAdapter("Select * From myTable", Conn);
                DataSet ds = new DataSet("MyDataBase");
                Conn.Open();
                daTable.Fill(ds, "myTable");
                Conn.Close();
                Datagrid1.ItemsSource = ds.Tables[0].DefaultView;
            }
    Как при нажатии на кнопку( а лучше при любом изменении данных в DataGrid, если можно) сохранять все изменения обратно в БД?


    • Изменено afomin31 22 декабря 2017 г. 13:19
    22 декабря 2017 г. 13:19

Ответы

  • Для этого используется метод DataAdapter.Update(), аналогично DataAdapter.Fill(). Так как используется базовый DataAdapter то потребуется установить команды для добавления/изменения/удаления.

    Описание и пример кода есть на MSDN:

    https://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа afomin31 24 декабря 2017 г. 12:23
    22 декабря 2017 г. 18:41
    Модератор

Все ответы

  • Для этого используется метод DataAdapter.Update(), аналогично DataAdapter.Fill(). Так как используется базовый DataAdapter то потребуется установить команды для добавления/изменения/удаления.

    Описание и пример кода есть на MSDN:

    https://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа afomin31 24 декабря 2017 г. 12:23
    22 декабря 2017 г. 18:41
    Модератор
  • Спасибо. А как сделать так чтобы он обновлял при любом изменении в DataGrid? Ну или хотя бы при нажатии на кнопочку.
    22 декабря 2017 г. 19:13
  • Вызывать код для сохранения при любом изменении (не рекомендую) или при нажатии на кнопочку (по таймеру, при закрытии приложения и т.п.)

    This posting is provided "AS IS" with no warranties, and confers no rights.

    22 декабря 2017 г. 19:26
    Модератор
  • Ну переменная для dataadepter (как и все в войде кнопки открытия) локальная, ну видимо поэтому не хочет вызываться в кнопке сохранения. Как тогда использовать к ней .Update в войде кнопки сохранения?
    22 декабря 2017 г. 19:52
  • Ну так объявите переменную и создайте дата адаптер (и все остальное что требуется) в методе который обрабатывает нажатие кнопки. Или же сделайте все что вам нужно членами класса.

    Еще правильнее будет использовать MVVM.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    22 декабря 2017 г. 21:09
    Модератор