TableAdapter的更新命令的连接表(TableAdapter UpdateCommand o

2019-10-21 12:21发布

假设我有一个从一个TableAdapter,其含量为2联接表加载一个DataGridView,所以表C是:

SELECT A.*, B.name LEFT JOIN B ON B.id = A.b_id

由向导生成的这个没有更新命令,我知道了。 但是,如果表中的数据几乎完全由表A和表B只参加了以提供ID在表A中所引用数据的名称,我可以提供自己的更新命令,如果用户修改,更新表A在DataGridView的值?

也就是说,我想设置表C的更新命令到:

UPDATE A SET value = [[new value]] WHERE id = [[current item]]

如果糟糕来糟糕的是,我可以让用户输入自己的新价值为对话框,这样做的。 这似乎只是这将是一个简单得多做如上。 将这种方法工作?

Answer 1:

你可以做的正是你想要的范围内什么DataAdapter 。 你可以找到在MSDN一个很好的演练 。

没有看到你的代码,你的适配器的设置看起来是这样的:

var dataAdapter = new SqlDataAdapter(
    "SELECT A.*, B.name FROM A LEFT JOIN B ON B.id = A.b_id", sqlConn);

var dataAdapter.UpdateCommand = new SqlCommand(
    "UPDATE A SET value = @Value WHERE id = @Id", sqlConn);

// Define the parameters to be used in the update command.
dataAdapter.UpdateCommand.Parameters.Add(
    "@Value", SqlDbType.NVarChar, 100, "Value_Column_Name");

dataAdapter.UpdateCommand.Parameters.Add(
    new SqlParameter("@Id", SqlDbType.Int)
    {
        SourceColumn = "Id_Column_Name"
    });


文章来源: TableAdapter UpdateCommand on JOINed table