没有给出两个OleDBCommands的一个或多个必需参数的值

时间:2013-12-03 05:15:05

标签: c# database ms-access oledbcommand

所以我有两个不同的块来更新我的访问数据库中的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

1 个答案:

答案 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();
        }
    }
}

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