3

微软自己的文档提供了一个删除记录的例子,如下:

// Create the DeleteCommand.
command = new SqlCommand(
    "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

// Add the parameters for the DeleteCommand.
parameter = command.Parameters.Add(
    "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;

adapter.DeleteCommand = command;

但是在我的系统上它不起作用(抱怨缺少@CustomerID)。相反,如果我更换

command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");

上面有

command.Parameters.AddWithValue("@CustomerID", 5);

它有效

为什么?

4

1 回答 1

5

在这一行:

command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");

在这个重载中,5 指的是参数的长度,而不是值。如果要添加值,则必须添加以下内容:

command.Parameters["@CustomerID"].Value = "5";
于 2012-10-16T02:36:02.810 回答