【发布时间】:2023-03-21 19:39:01
【问题描述】:
我正在尝试构建一个工具来编写/定义针对 ADO.NET 数据提供程序的一些查询。
我想使用IDbCommand 或IDbCommandParameter 接口根据提供的查询文本识别查询参数。我的 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.DeriveParameters或OdbcCommandBuilder.DeriveParameters作为替代方案吗? -
DeriveParameters似乎没有在 ADO.NET 对象的接口或抽象类DbCommandBuilder中定义......尽管这似乎是我正在寻找的功能。
标签: c# sql parameters ado.net