C# 没有为一个或多个具有两个OLEDBCommand的必需参数提供值

C# 没有为一个或多个具有两个OLEDBCommand的必需参数提供值,c#,database,ms-access,oledbcommand,C#,Database,Ms Access,Oledbcommand,所以我有两个不同的块来更新access数据库中的两个不同单元格。第一次更新工作得非常好,并且每次都进行更新。然而,第二个块每次到达ExecuteNonQuery()调用时都会给我一个错误 “没有为一个或多个必需参数提供值” 代码如下: OleDbCommand cmdUpdateToolStatus = new OleDbCommand(@"UPDATE Tools SET ToolStatus= @Status WHERE ToolID= @tid", conn); cmdUpdateTool

所以我有两个不同的块来更新access数据库中的两个不同单元格。第一次更新工作得非常好,并且每次都进行更新。然而,第二个块每次到达ExecuteNonQuery()调用时都会给我一个错误

“没有为一个或多个必需参数提供值”

代码如下:

OleDbCommand cmdUpdateToolStatus = new OleDbCommand(@"UPDATE Tools SET ToolStatus= @Status WHERE ToolID= @tid", conn);
cmdUpdateToolStatus.Parameters.AddWithValue("@Status", 0);
cmdUpdateToolStatus.Parameters.AddWithValue("@tid", PBOXTOOLIDS[0]);
conn.Open();
cmdUpdateToolStatus.ExecuteNonQuery();
conn.Close();

OleDbCommand cmdUpdateEmpID = new OleDbCommand(@"UPDATE Tools SET EmployeeID= @eid WHERE ToolID= @tid", conn);
cmdUpdateEmpID.Parameters.AddWithValue("@eid", EMPID);
cmdUpdateEmpID.Parameters.AddWithValue("@tid", PBOXTOOLIDS[0]);
conn.Open();
cmdUpdateEmpID.ExecuteNonQuery();
conn.Close();
我甚至尝试用实际的数字替换EMPID和PBOXTOOLIDS[0],但第二部分不会传递该错误消息

我对使用数据库相当陌生,尤其是在C#中,但这段代码有点问题

数据库字段需要数字,如果这有帮助的话


是否有其他方法可以使用正确的信息更新数据库?我可以使用OleDbCommand作为一种方式,也可能是其他方式??我现在很惊慌哈哈

不,你在问题中发布的原始代码没有问题。我将您的代码块复制并粘贴到一个最小的C#控制台应用程序中,两个更新都可以正常工作。整个测试应用程序是

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Data.OleDb;
命名空间工具测试
{
班级计划
{
静态void Main(字符串[]参数)
{
使用(OleDbConnection conn=新OleDbConnection())
{
连接字符串=
@“Provider=Microsoft.ACE.OLEDB.12.0;”+
@“数据源=C:\Users\Public\Database1.accdb;”;
OleDbCommand cmdUpdateToolStatus=新OleDbCommand(@“更新工具集工具状态=@状态,其中工具ID=@tid”,conn);
cmdUpdateToolStatus.Parameters.AddWithValue(“@Status”,7);
cmdUpdateToolStatus.Parameters.AddWithValue(“@tid”,1);
conn.Open();
cmdUpdateToolStatus.ExecuteOnQuery();
康涅狄格州关闭();
OleDbCommand cmdUpdateEmpID=新OleDbCommand(@“更新工具集EmployeeID=@eid,其中ToolID=@tid”,conn);
cmdUpdateEmpID.Parameters.AddWithValue(“@eid”,2);
cmdUpdateEmpID.Parameters.AddWithValue(“@tid”,1);
conn.Open();
cmdUpdateEmpID.ExecuteOnQuery();
康涅狄格州关闭();
}
Console.WriteLine();
控制台。WriteLine(“完成”);
Console.ReadKey();
}
}
}

您的代码中一定有其他原因导致第二次更新失败。

如果是windows窗体应用程序,这是否重要?我看不出我这边有什么问题。我正在检查数组中的值,两个值都在那里并且正确无误。:/这个项目在两周内到期。。