我正在使用 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/