Как обновить таблицу на основе нескольких из 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);
Теперь вы можете расширить это и настроить использование значений из сетки данных для обновления таблиц. В качестве альтернативы вы можете использовать хранимую процедуру. Вам просто нужно будет передать параметры, а затем вы можете использовать несколько операторов обновления в хранимой процедуре для обновления нескольких таблиц...
Эти ссылки будут полезны для вас...