C# 如何在wpf中从datagridview更新多基表

C# 如何在wpf中从datagridview更新多基表,c#,wpf,datagridview,updating,multi-table,C#,Wpf,Datagridview,Updating,Multi Table,我使用sqlserverCe作为数据库和visual studio 2012(windows演示表单) 我使用两个表来填充datagrid视图,它工作正常 我需要从datagridview更新数据库 我四处寻找,但没有找到解决我问题的正确方法。。单表更新的大部分搜索结果 我使用了SqlCeCommandBuilder,但它给出了一个错误,即它不适用于基于多个表 建议我做些什么CommandBuilder仅用于简单的SELECT语句,即对于单个表,当您使用JOIN时,它不会更新 自动生成单表命令,

我使用sqlserverCe作为数据库和visual studio 2012(windows演示表单)

我使用两个表来填充datagrid视图,它工作正常

我需要从datagridview更新数据库 我四处寻找,但没有找到解决我问题的正确方法。。单表更新的大部分搜索结果

我使用了SqlCeCommandBuilder,但它给出了一个错误,即它不适用于基于多个表
建议我做些什么

CommandBuilder
仅用于简单的
SELECT
语句,即对于单个表,当您使用
JOIN
时,它不会更新

自动生成单表命令,用于将对数据集所做的更改与关联的SQL Server数据库进行协调。无法继承此类。

您必须使用参数化查询

这里是一个非常简单的参数化查询的示例…

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;
}
现在,您可以扩展此功能,并设置使用数据网格中的值来更新表。或者,您可以使用存储过程。您只需传递参数,然后就可以在存储过程中使用多个update语句来更新多个表

这些链接将对您有所帮助


我得到了你。让我试试我用了你的密码。您的代码有助于删除该行,但我想更新它。。我寻找了你提供的链接,但这对我来说是很难理解的,因为我是编程新手。。我仍在寻找更好的解决方案。
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);