Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C MS Access数据库-发送第二个更新命令显示错误_C#_Ms Access - Fatal编程技术网

C# C MS Access数据库-发送第二个更新命令显示错误

C# C MS Access数据库-发送第二个更新命令显示错误,c#,ms-access,C#,Ms Access,我正在尝试创建基于C和Access数据库的程序更新命令。它的工作方式是我想要的,但是当我第二次尝试更新另一条或同一条记录时,VS2013显示错误 未处理InvalidComObjectException。 无法删除已与其基础RCW分离的COM对象 用过 我的程序是这样的: FormA-带有表格Grafik的DataGridView1和打开FormB的按钮的主窗口 FormB-第二个表单,带有表Employyes的DataGridView2和FormC的按钮 FormC-直接在DataGridVi

我正在尝试创建基于C和Access数据库的程序更新命令。它的工作方式是我想要的,但是当我第二次尝试更新另一条或同一条记录时,VS2013显示错误

未处理InvalidComObjectException。 无法删除已与其基础RCW分离的COM对象 用过

我的程序是这样的:

FormA-带有表格Grafik的DataGridView1和打开FormB的按钮的主窗口

FormB-第二个表单,带有表Employyes的DataGridView2和FormC的按钮

FormC-直接在DataGridView上使用文本框、组合框和按钮no将记录添加、删除和更新到数据库Kategorie的表单

更新过程使用ComboBox ComboboxWybierzCategorie从数据库Kategorie中选择要更新的类别,使用textBox TextBoxedYTujCategorie设置所选Kategoria的新名称,并使用按钮接受过程

Broker.cs

FormC.cs

我知道代码搞错了,很抱歉。更有趣的是,当我关闭FormC并使用按钮重新打开它时,更新函数工作正常,除非我想再次使用它

VS2013选择此行作为错误原因:

int cmd = command.ExecuteNonQuery();
与数据库的连接:

OleDbConnection connection;
    OleDbCommand command;

private void ConnectTo()
    {
        //inside//connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=bc3e-ps.accdb");
        /*outside*/
        connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\bc3e-ps.accdb");
        command = connection.CreateCommand();

我做错了什么?

由于您每次都在向命令添加参数,因此不应再次使用命令对象

每次要执行另一个命令时,只需调用connection.CreateCommand

您可以重复使用命令,但是您只想在每个调用上设置现有参数,而不是在每个调用上添加参数

int cmd = command.ExecuteNonQuery();
OleDbConnection connection;
    OleDbCommand command;

private void ConnectTo()
    {
        //inside//connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=bc3e-ps.accdb");
        /*outside*/
        connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\bc3e-ps.accdb");
        command = connection.CreateCommand();