c# - 如何删除 datagridview 中的行并同时更新 Access 中的数据库

标签 c# mysql sql database datagridview

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

我有一个 WindowsForm 来从数据库中删除记录,但我只能删除 datagridview 中的行(第一行除外),并且数据库不会更新。

当我尝试删除行时出现此错误:

System.Data.OleDbException (0x80040E10): There was provided no value to one or more required parameters.

这是我的代码:

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 中的第一行

提前致谢

最佳答案

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

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

为避免这种情况,请将数据库放入 bin 文件夹中(调试或发布)并确保数据库未被复制。您可以通过在 Visual Studio 中单击数据库文件并将复制到输出目录设置为不复制

来完成此操作

关于c# - 如何删除 datagridview 中的行并同时更新 Access 中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283470/

相关文章:

c# - C#中命名空间的使用

mysql - MySQL Workbench 6.1.7 中未出现执行计划选项卡

MySql 查询统计音乐排行榜中的歌曲投票

sql - RDBMS数据库中的多对多关系

c# - 一种不同的防病毒方法。我是否朝着正确的方向前进?

c# - 为 ListBoxItem 绑定(bind) mouseLeftButtonDown 并在 PropertyChanged 上绑定(bind)背景颜色(mvvm、wpf)

c# - 将文件上传控件作为参数传递给方法

php - 如果数据丢失则重定向到页面

mysql - 比较 SQL 中的日期大小写

sql - 奇怪的 PostgreSQL "value too long for type character varying(500)"