所以我有两个不同的块来更新我的访问数据库中的2个不同的单元格。第一个更新工作完全正常,每次更新。然而,第二个块每次到达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一个,也可能用其他方式?我现在处于恐慌状态lol
答案 0 :(得分:1)
不,您在问题中发布的原始代码没有任何问题。我将您的代码块复制并粘贴到一个最小的C#控制台应用程序中,两个UPDATE都可以正常工作。整个测试应用程序是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
namespace toolTest
{
class Program
{
static void Main(string[] args)
{
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data Source=C:\Users\Public\Database1.accdb;";
OleDbCommand cmdUpdateToolStatus = new OleDbCommand(@"UPDATE Tools SET ToolStatus= @Status WHERE ToolID= @tid", conn);
cmdUpdateToolStatus.Parameters.AddWithValue("@Status", 7);
cmdUpdateToolStatus.Parameters.AddWithValue("@tid", 1);
conn.Open();
cmdUpdateToolStatus.ExecuteNonQuery();
conn.Close();
OleDbCommand cmdUpdateEmpID = new OleDbCommand(@"UPDATE Tools SET EmployeeID= @eid WHERE ToolID= @tid", conn);
cmdUpdateEmpID.Parameters.AddWithValue("@eid", 2);
cmdUpdateEmpID.Parameters.AddWithValue("@tid", 1);
conn.Open();
cmdUpdateEmpID.ExecuteNonQuery();
conn.Close();
}
Console.WriteLine();
Console.WriteLine("Done.");
Console.ReadKey();
}
}
}
您的代码中必定还有其他因素导致您的第二次更新失败。