从datagridview C#中删除数据库中的一行

Posted

技术标签:

【中文标题】从datagridview C#中删除数据库中的一行【英文标题】:Deleting a row in a database from datagridview C# 【发布时间】:2017-03-20 22:54:21 【问题描述】:

我正在尝试从 datagridview 和数据库中删除一个条目。我得到了它,因此它从数据网格视图中删除了该行,但它也无法从数据库中删除它。这是我的代码:

  private void listBtn_Click(object sender, EventArgs e)
  
        mysqlDataAdapter mysqldatadapter = new MySqlDataAdapter("select id, username from members ORDER BY id", new MySqlConnection(conn.connectionString));

        mysqldatadapter.Fill(ds);

        dataGridView.DataSource = ds.Tables[0];

        listBtn.Enabled = false;
  


  private void btnDelete_Click(object sender, EventArgs e)
  
        using (MySqlConnection dbConn = new MySqlConnection(conn.connectionString))
        
            dbConn.Open();

            for (int i = 0; i < dataGridView.Rows.Count; i++)
            
                DataGridViewRow row = dataGridView.Rows[i];

                if (row.Selected == true)
                
                    dataGridView.Rows.RemoveAt(i);

                    MySqlCommand cmd = dbConn.CreateCommand();
                    cmd.CommandText = "DELETE FROM members WHERE id = " + i;

                    try
                    
                        cmd.ExecuteNonQuery();
                    
                    catch (MySqlException ex)
                    
                        MessageBox.Show(ex.Message);
                    
                
            

            dbConn.Close();
        
  

我对此感到茫然,任何帮助将不胜感激。

谢谢!

更新 - 有没有办法获取单个单元格的值以传递给 mysql 命令?比如抢id?

【问题讨论】:

很难说,但您的i 值可能与members 表中的ID 列不匹配。 我就是这么想的。有没有办法获取单元格的值? 【参考方案1】:

i 的值可能与 member 表中的 id 字段不匹配。

您可能需要更改此行:

cmd.CommandText = "DELETE FROM members WHERE id = " + i;

cmd.CommandText = "DELETE FROM members WHERE id = " + row.cells[id.Index].ToString();

【讨论】:

当我更改它时,我收到一条错误消息“无法使用 [] 将索引应用于 'DataGridViewRow' 类型的表达式。 @bashis 谢谢我认为你是对的。自从我使用 DataGridViews 已经有一段时间了 @dave 比这更难:***.com/questions/13436553/… @bashis 啊。多么痛苦。 我已经根据这里提到的应该工作的内容更新了答案:***.com/a/20474611/361762

以上是关于从datagridview C#中删除数据库中的一行的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个DataGridView中的一列添加DateTimePicker控件 C#

c# 如何删除datagrieview中指定那行数据

使用C#删除datagridview和数据库中的行

如何清空C#中dataGridView的某一行数据??

C#里怎样清空DataGridview中的数据

c# dataGridView对access数据库的增加 修改 删除