C# 确定C中SQL查询参数的数据类型#
在C#应用程序中。我希望能够检索查询的预期参数及其元数据 例如,如果有如下查询C# 确定C中SQL查询参数的数据类型#,c#,.net,sql,sql-server,C#,.net,Sql,Sql Server,在C#应用程序中。我希望能够检索查询的预期参数及其元数据 例如,如果有如下查询 select * from customer where name = @customer_name 是否可以从查询中确定@customer\u name字段的预期数据类型。我知道我可以使用 DbDataReader.GetSchemaTable() 我需要能够使用参数执行类似的操作。如果第三方提供商能够解决这个问题,我愿意使用他们。如果您的查询字符串与问题中的字符串类似,那么您就不能 但是,如果您有一个命令对象
select * from customer where name = @customer_name
是否可以从查询中确定@customer\u name字段的预期数据类型。我知道我可以使用
DbDataReader.GetSchemaTable()
我需要能够使用参数执行类似的操作。如果第三方提供商能够解决这个问题,我愿意使用他们。如果您的查询字符串与问题中的字符串类似,那么您就不能 但是,如果您有一个命令对象并添加了参数,那么您可以找到
DbType
如下所示:
foreach (SqlParameter parameter in command.Parameters)
Console.WriteLine(parameter.DbType);
但是,只有在将参数添加到命令后才能执行该操作 这是一个有点鸡和蛋的情况。我试图从查询中确定参数,然后提示用户在控件中输入符合其数据类型的值。@keitn,我不确定您是否能做到这一点,我现在想到的唯一一件事是从查询中提取表名,从数据库中获取表架构,然后将列的数据类型与查询中的数据类型进行比较……问题是可能会使用联接/临时表等。我认为我能做的最好的方法就是使用文本解析,我知道这远远不够理想,但我想不出任何其他方法。