Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定C中SQL查询参数的数据类型#_C#_.net_Sql_Sql Server - Fatal编程技术网

C# 确定C中SQL查询参数的数据类型#

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() 我需要能够使用参数执行类似的操作。如果第三方提供商能够解决这个问题,我愿意使用他们。如果您的查询字符串与问题中的字符串类似,那么您就不能 但是,如果您有一个命令对象

在C#应用程序中。我希望能够检索查询的预期参数及其元数据

例如,如果有如下查询

select * from customer where name = @customer_name
是否可以从查询中确定@customer\u name字段的预期数据类型。我知道我可以使用

DbDataReader.GetSchemaTable()

我需要能够使用参数执行类似的操作。如果第三方提供商能够解决这个问题,我愿意使用他们。

如果您的查询字符串与问题中的字符串类似,那么您就不能

但是,如果您有一个命令对象并添加了参数,那么您可以找到
DbType
如下所示:

foreach (SqlParameter parameter in command.Parameters)
    Console.WriteLine(parameter.DbType);

但是,只有在将参数添加到命令后才能执行该操作

这是一个有点鸡和蛋的情况。我试图从查询中确定参数,然后提示用户在控件中输入符合其数据类型的值。@keitn,我不确定您是否能做到这一点,我现在想到的唯一一件事是从查询中提取表名,从数据库中获取表架构,然后将列的数据类型与查询中的数据类型进行比较……问题是可能会使用联接/临时表等。我认为我能做的最好的方法就是使用文本解析,我知道这远远不够理想,但我想不出任何其他方法。