SqlDataAdapter.DeleteCommand()适用于AddWithValue()但不适用于Add() - 为什么?

时间:2012-10-16 02:24:10

标签: c# sql-server sqldataadapter

Microsoft's own documentation提供了删除记录的示例,如下所示:

// 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);

It works

为什么?

1 个答案:

答案 0 :(得分:5)

在这一行:

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

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

command.Parameters["@CustomerID"].Value = "5";