我使用SqlCommand Type == StoredProcedure为sp调用编写一个简单的包装器。我只想在不指定名称的情况下传递参数。我该怎么做? cmd.Parameters.Add(param)不起作用,它只获取SqlParameter实例。 谢谢你的回复,
答案 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对象将包含所有参数信息。