如何在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
我认为您正在连接到projects文件夹中的Access数据库。
默认情况下,数据库将在每次构建项目时复制到bin文件夹中,因此您的更改将被覆盖。
要避免这种情况,请将数据库放在bin文件夹(debug或release)中,并确保数据库没有被复制。你可以点击Visual Studio中的数据库文件,将Copy to Output Directory设置为不要复制