【问题标题】:Mechanism to find parameters in IDbCommand text?在 IDbCommand 文本中查找参数的机制?
【发布时间】:2023-03-21 19:39:01
【问题描述】:

我正在尝试构建一个工具来编写/定义针对 ADO.NET 数据提供程序的一些查询。

我想使用IDbCommandIDbCommandParameter 接口根据提供的查询文本识别查询参数。我的 google-fu 带来了太多与我正在寻找的内容无关的点击,主要是关于如何设置参数......这不是我想要做的。

例如,假设我提供以下查询:

SELECT * FROM foo WHERE id = ? and name = ?;

现在,如果这是一个 OdbcCommand 对象,我想运行一个命令并返回某种集合,我可以提示用户详细了解这两个参数是什么,以及其中应该包含什么类型的值.

但是,对于 SqlCommand... 我应该寻找这样的东西:

SELECT * FROM foo WHERE id = @idparam AND name = @nameparam;

是否有一种机制可以从命令文本中提取参数,我可以合理地期望从IDbCommand 接口或DbCommand 抽象类中工作?我真的不想编写一些特定于每种类型的 ADO.NET 数据提供程序的搜索过滤器。

【问题讨论】:

  • 每个数据库都是不同的,我不相信有任何抽象的 ADO.NET 接口可以提供关于参数语法等变幻莫测的信息。您很可能必须自己创建该接口,并为您打算支持的任何数据库实现它。
  • 您会考虑使用OleDbCommandBuilder.DeriveParametersOdbcCommandBuilder.DeriveParameters 作为替代方案吗?
  • DeriveParameters 似乎没有在 ADO.NET 对象的接口或抽象类 DbCommandBuilder 中定义......尽管这似乎是我正在寻找的功能。

标签: c# sql parameters ado.net


【解决方案1】:

如 cmets 中所述,此功能不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-04
    • 2013-01-23
    • 2013-08-18
    • 2012-04-04
    • 2011-06-03
    • 2014-02-01
    • 2013-04-02
    • 2020-10-12
    相关资源
    最近更新 更多