1

假设我有一个从 TableAdapter 加载的 DataGridView,它的内容来自 2 个 JOINed 表,所以表 C 是:

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

我知道,向导不会为此生成 UpdateCommand。但是,如果表的数据几乎完全来自表 A,并且表 B 仅加入以提供表 A 中 id 引用的数据的名称,我是否可以只提供我自己的 UpdateCommand 来更新表 A 如果用户更改DataGridView 中的值?

也就是说,我想将表 C 的 UpdateCommand 设置为:

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

如果情况变得更糟,我可以创建一个对话框让用户输入他们的新值并这样做。看起来像上面那样做会简单得多。这种方法行得通吗?

4

1 回答 1

2

您可以在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"
    });
于 2015-01-02T17:56:38.233 回答