如何在datagridview中删除行,同时更新Access中的数据库

本文关键字:更新 Access 数据库 datagridview 删除行 | 更新日期: 2023-09-27 18:15:18

我正在用c#开发一个应用程序,可以访问MS access 2007中创建的数据库。

我有一个WindowsForm从数据库中删除记录,但我只能在datagridview中删除行(除了第一个),数据库没有更新。

当我试图删除一行时,我得到这个错误:

System.Data。oledbeexception (0x80040E10):没有提供值到一个或多个必需的参数。

下面是我的代码:
private void btn_remover_Click(object sender, EventArgs e)
{
    using (OleDbConnection oleConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Stock_Material.accdb"))
    {
        try
        {
            oleConn.Open();
            if (MessageBox.Show("Tem a certeza que pretende remover este registo(s)", " Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.Yes)
                   foreach (DataGridViewRow row in dataGridView_remover.SelectedRows)
                   {
                       int rowId = Convert.ToInt32(row.Cells[0].Value);
                       if (rowId > 0)
                       {
                           dataGridView_remover.Rows.RemoveAt(row.Index);
                           OleDbCommand delcmd = new OleDbCommand("Delete from product where id_Produto= " + rowId + "");
                           delcmd.Connection = oleConn;
                           delcmd.ExecuteNonQuery();
                       }
                   }
               }
               catch (Exception ex )
               {
                   MessageBox.Show(ex.ToString());
               }
               oleConn.Close();
           }
        }

如何解决这些问题:

  • 当我删除datagridview中的记录时,数据库不更新。
  • 不要让我删除datagridview的第一行

Thanks in advance

如何在datagridview中删除行,同时更新Access中的数据库

我认为您正在连接到projects文件夹中的Access数据库。

默认情况下,数据库将在每次构建项目时复制到bin文件夹中,因此您的更改将被覆盖。

要避免这种情况,请将数据库放在bin文件夹(debug或release)中,并确保数据库没有被复制。你可以点击Visual Studio中的数据库文件,将Copy to Output Directory设置为不要复制