【问题标题】:Deleting selected row from datagridview and database从datagridview和数据库中删除选定的行
【发布时间】:2016-05-26 21:41:41
【问题描述】:

我正在编写此代码以一次从 datagridview 和数据库中删除选定的行。 但我在“deleteButton.Click”中遇到错误

deleteButton.Click += new System.EventHandler(this.DeleteRecord);

 private DeleteRecord(object sender, EventArgs e)
{


foreach(DataGridViewRow row in DataGridView1.SelectedRows)
 {
  int rowIdToDelete = row.Cells[ID].Value;
  using (OleDbConnection conn = new OleDbConnection(connectionString))
                {
                    string query = "DELETE FROM [Record] WHERE ID = " + rowIdToDelete;
                    conn.Open();

                    using (OleDbCommand cmd = new OleDbCommand(query, conn))
                    {
                        using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn))
                        {
                            DataTable ds = new DataTable();
                            adapter.Update(ds);
                            dataGridView.DataSource = ds;
                            cmd.ExecuteNonQuery();
                        }
                    }
                }
 }

} 

【问题讨论】:

  • 错误是什么?为什么要定义一个新的数据表并再次填充它。你应该删除一行吗?
  • int rowIdToDelete =(int)row.Cells['ID'].Value;然后你必须执行查询而不是再次填充表

标签: c# winforms datagridview


【解决方案1】:

rowIdToDelete 括在引号内。

string query = "DELETE FROM [Record] WHERE ID = " + "'rowIdToDelete'";

如果ID 是带有双引号的列名,

int rowIdToDelete = row.Cells["ID"].Value;

【讨论】:

  • private void btnDelete_Click(object sender, EventArgs e) { foreach (DataGridViewRow item in this.dataGridView1.SelectedRows) { dataGridView1.Rows.RemoveAt(item.Index); } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 2016-12-07
  • 1970-01-01
  • 2012-06-03
相关资源
最近更新 更多