Как обновить таблицу на основе нескольких из datagridview в wpf

public DataTable FillDataGrid()
{
    string CmdString = string.Empty;
    using (SqlCeConnection con = new SqlCeConnection(ConString))
    {
        CmdString = "SELECT categories.categories_id as ID, categories_description.categories_name as name,categories.categories_image as Image,categories.parent_id as parentId,categories.sort_order as sortOrder,categories.date_added as dateAdded,categories.last_modified as lastModified FROM categories INNER JOIN categories_description ON categories.categories_id=categories_description.categories_id where categories_description.language_id=1";

        SqlCeCommand cmd = new SqlCeCommand(CmdString, con);
        DataTable dt = new DataTable("categories");
        SqlCeDataAdapter adapter = new SqlCeDataAdapter(cmd);
        adapter.Fill(dt);

        return dt;
    }   
}

public void FillDataGrid()
{
    DatabaseCore db = new DatabaseCore();
    DataTable dt = db.FillDataGrid();
    show_query.ItemsSource = dt.DefaultView;
}

Я использую sqlserverCe в качестве базы данных и Visual Studio 2012 (формы представления Windows)

Я использую две таблицы, чтобы заполнить представление таблицы данных, и он работает правильно.

мне нужно обновить базу данных из datagridview Я искал об этом, но не получил правильное решение для моей проблемы.. большая часть результатов поиска для обновления одной таблицы

я использовал SqlCeCommandBuilder, но выдает ошибку, что это не применимо для нескольких таблиц на основе предложить мне что-то для этого

1 ответ

Решение

CommandBuilder используется только для простого SELECT заявления, то есть для отдельных таблиц, он не будет обновляться, когда вы использовали JOIN...

Automatically generates single-table commands that are used to reconcile changes made to a DataSet with the associated SQL Server database. This class cannot be inherited. (MSDN)

Вам придется использовать параметризованный запрос.

Вот пример очень простого параметризованного запроса...

string value = DataGrid.Rows[0].Cells["ID"].Value);; // Takes the value from TextBox1
Cmd = new SqlCommand("DELETE FROM Table WHERE CountryMasterId = @ID", Con); // makes a new SqlCommand object for delete query and `@ID` is the parameter for passing the value...
Cmd.Parameters.AddWithValue("@ID", value);

Теперь вы можете расширить это и настроить использование значений из сетки данных для обновления таблиц. В качестве альтернативы вы можете использовать хранимую процедуру. Вам просто нужно будет передать параметры, а затем вы можете использовать несколько операторов обновления в хранимой процедуре для обновления нескольких таблиц...

Эти ссылки будут полезны для вас...

Другие вопросы по тегам