DataGrid и SQLite Database

Рейтинг: 0Ответов: 1Опубликовано: 20.02.2015

Создал БД, прикрутил ее к DataGrid вот так:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        var sqlConnection = new SQLiteConnection("Data Source = Database.db; Version = 3");
        sqlConnection.Open();

        var sqlCommand = new SQLiteCommand("select * from List", sqlConnection);
        sqlCommand.ExecuteNonQuery();

        var dataTable = new DataTable("List");
        var sqlAdapter = new SQLiteDataAdapter(sqlCommand);
        sqlAdapter.Fill(dataTable);

        DataGrid1.ItemsSource = dataTable.DefaultView;
        sqlAdapter.Update(dataTable);
    }

Тут вроде все работает. Загружает данные из БД и отображает в DataGrid. Но как теперь сохранять изменения сделанные в DataGrid в БД? Вот собственно сам проект: http://rghost.ru/6rNDPDXrB

Ответы

▲ 1

Для этого надо определить следующие свойства dataAdapter:

InsertCommand - для операций вставки новых строк;
UpdateCommand - для изменения существующих строк;
DeleteCommand - для удаления строк.

Существует объект SqlCommandBuilder, который автоматом определит эти свойства на основании значения свойства SelectCommand и при условии выборки данных из одной таблицы.

//Автоматически сформируем команды обновления данных 
SqlCommandBuilder =  new SqlCommandBuilder(sqlAdapter);

НО! если наш SelectCommand выбирает данные из двух и более таблиц придется определять InsertCommand, UpdateCommand и DeleteCommand вручную.