【问题标题】:Update changes every row in DataGridView更新 DataGridView 中每一行的更改
【发布时间】:2020-12-25 22:54:45
【问题描述】:

我对 c# 比较陌生,我在我的大学从事一个项目,其中包括验证交换机,我现在正在处理 CRUD 以编辑、创建和删除 datagridview 中一列的项目,所以这是我的问题.

我有一个按钮可以作为我对 crud 的更新,它从文本框中获取文本并将文本框中的文本替换为一行中的文本,所以基本上当我点击我想要更改的行时然后输入新文本,当我单击按钮进行更新时,它会更新我的 datagridview 上的所有行,所以我的目标是只用文本框中的文本编辑一行。

    private void button6_Click(object sender, EventArgs e)
    {
        string strcon = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Verificacao de Quadros 
                         Eletricos\Verificação de Quadros Elétricos\bin\Debug\DatabaseENG.accdb";
        string comando = @"UPDATE [Norms Table] 
                         set [Drills (according to the norm EN 61439-2)]
                         = @drills";

        using (OleDbConnection con = new OleDbConnection(strcon))
        {
            using (OleDbCommand com = new OleDbCommand(comando, con))
            {
                com.Parameters.Add("@drills", OleDbType.VarChar).Value = textBox5.Text;

                try
                {
                    con.Open();
                    com.ExecuteNonQuery();
                    MessageBox.Show("Drill succesfully edited");

                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
                }
            }
        }
    }

所以这里是更新的代码,感谢您的时间。

【问题讨论】:

  • UPDATE 查询需要一个WHERE 子句来限制更新的内容。通常,这可能类似于WHERE id = 3,或者主/唯一键/值引用可能被命名的任何名称。没有它,每一行肯定会得到更新。
  • 所以它会是@"UPDATE FROM [Norms Table] where [Drills (according to the norm EN 61439-2)] = @drills";?
  • 不完全是:UPDATE [Norms Table] SET ... WHERE ...
  • string comando = @"UPDATE [Norms Table] SET [Drills (according to the norm EN 61439-2)] WHERE = @drills";
  • 需要应用过滤器的字段。 UPDATE tablename SET fieldname = something WHERE ID=somerecordID

标签: c# ms-access datagridview oledb crud


【解决方案1】:

如前所述,查询需要WHERE 子句。

所以,根据您的查询:

UPDATE [Norms Table] 
   SET [Drills (according to the norm EN 61439-2)] = @drills

... 需要添加 where 子句:

UPDATE [Norms Table] 
   SET [Drills (according to the norm EN 61439-2)] = @drills
 WHERE id = @id

where 子句中的id 部分需要匹配来自Norms Table 的主键列引用,因为没有给出表结构。我展示的是一个基本示例。

【讨论】:

  • 我认为我没有清楚地解释自己,我想做的是,当我点击一个名为“编辑”的按钮时,我有一个文本框,当我输入行的名称时,我希望更改该行,我的问题是我不希望每次都更改一行,必须在文本框中指定该行。
  • 据说...my objective is to edit only one row with the text from the textbox通常就是这样做的。除此之外,您可能必须将信息附加到您感知处理的问题(不是在其他评论中)详细信息。
  • 我认为 OP 的意思是他想在 [Drills (according to the norm EN 61439-2) 列中选择一个单元格,然后在按下按钮时通过 txtbox 更改其文本跨度>
  • @FilipeAlmeida。好的,我可以(有些)看到。也许写入数据库的事件处理程序是这里的混乱? (这似乎是这样,基于评论upvotes)无论如何,如果您对所问的问题有解决方案,那么请继续,我不介意删除我的答案。
  • 不,我根本没有,如果我这样做了,我会发布,我只是从 OP 那里阅读 cmets
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多