一尘不染

是否可以使用 SqlClient 自动获取查询字符串中定义的参数列表

sql

我正在开发一个 C# 项目,该项目接受参数化查询并保存它们 - 然后按计划执行它们并通过电子邮件发送结果(如果返回任何记录)。

我正在使用System.Data.SqlClient命名空间来创建SqlConnectionSqlCommand包含查询和参数信息,并将SqlDataReader查询结果从SqlCommand我可以使用的东西中获取。

我有例程可以“抓取”提供的查询以查找字符串文本中的任何参数(查找以“@”开头的单词)并保存这些参数 - 它工作正常 - 但我想知道是否有什么在SqlClient将获取查询文本并输出找到的参数列表的库中?

在研究了这个问题之后,我没有想出任何说你可以通过使用“这个东西”来获得查询文本中定义的参数列表的东西。

这可能是不可能的,这只是我想知道它是否是。目前,通过抓取查询字符串获取参数列表后,我必须要求用户定义数据类型——如果可以自动获取列表,这可能会消失。

如果您没有向SqlCommand查询字符串中存在的参数添加参数 - 您将收到一个异常,如

@ParameterName 在查询中定义但没有给出值

这就是让我认为这可能的原因。


阅读 100

收藏
2022-07-22

共1个答案

一尘不染

不在 SqlClient 中,因为它没有关于参数的数据类型信息。但是 SQL Server 可以从它们所使用的列比较表达式中推断出参数类型。

因此,请查看系统存储过程sp_describe_undeclared_parameters为您提供此信息。

2022-07-22