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

发布于 2024-10-13 06:41:37 字数 148 浏览 2 评论 0原文

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

I write a simple wrapper for sp calls using SqlCommand Type==StoredProcedure. I just want to pass parameter there without specifying its name. How can i do it? cmd.Parameters.Add(param) doesn't work, it gets only SqlParameter instance.
Thank you for replies,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薔薇婲 2024-10-20 06:41:37

尝试使用 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);

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

How about trying to use SqlCommandBuilder.DeriveParameters to populate the parameters collection?

Usage :

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

You would obviously need to then populate the values for each parameter.

烧了回忆取暖 2024-10-20 06:41:37

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 对象将包含所有参数信息。

AFAIK, you can't pass a Parameter without ParameterName. However, if you use Enterprise Library Data Access Application Block, you can do something like this:

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

Now your Command object will contain all the parameter information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文