有没有办法通过SqlCommand(ADO.NET)将未命名的参数传递给存储过程?

时间:2011-01-20 08:35:35

标签: .net ado.net

我使用SqlCommand Type == StoredProcedure为sp调用编写一个简单的包装器。我只想在不指定名称的情况下传递参数。我该怎么做? cmd.Parameters.Add(param)不起作用,它只获取SqlParameter实例。 谢谢你的回复,

2 个答案:

答案 0 :(得分:3)

尝试使用SqlCommandBuilder.DeriveParameters填充参数集合怎么样?

用法:

// Create Command
SqlCommand command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = storedProcedureName;

// Open Connection
connection.Open();

// Discover Parameters for Stored Procedure and populate command.Parameters Collection.
// Causes Rountrip to Database.
SqlCommandBuilder.DeriveParameters(command);

您显然需要填充每个参数的值。

答案 1 :(得分:0)

AFAIK,您无法在没有ParameterName的情况下传递参数。但是,如果使用Enterprise Library Data Access Application Block,则可以执行以下操作:

        Database db = DatabaseFactory.CreateDatabase("DatabaseName");
        DbCommand cmd = new SqlCommand("SP Name Here");
        cmd.CommandType = CommandType.StoredProcedure;
        db.DiscoverParameters(cmd);

现在,您的Command对象将包含所有参数信息。