Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 使用XML作为存储过程输入的查询生成器_C#_Sql_Xml_Sql Server 2008_Stored Procedures - Fatal编程技术网

C# 使用XML作为存储过程输入的查询生成器

C# 使用XML作为存储过程输入的查询生成器,c#,sql,xml,sql-server-2008,stored-procedures,C#,Sql,Xml,Sql Server 2008,Stored Procedures,我想创建一个查询生成器,它允许用户通过在网页上选择下拉列表/文本输入等来构建查询,从而创建一个包含查询过滤器的XML文件,例如(从网页/视图构建的XML): 我在这里找到了查询XML或接收XML然后插入到表中的示例,但是谁能给我一个简单的示例,说明如何设置过程来解析XML参数和构建SQL 我正在使用C#(MVC)和SQL Server 2008。您可以使用xsl将xml文件转换为SQL文件 比如: <xsl:transform version="2.0" xmlns:xsl="http:/

我想创建一个查询生成器,它允许用户通过在网页上选择下拉列表/文本输入等来构建查询,从而创建一个包含查询过滤器的XML文件,例如(从网页/视图构建的XML):

我在这里找到了查询XML或接收XML然后插入到表中的示例,但是谁能给我一个简单的示例,说明如何设置过程来解析XML参数和构建SQL


我正在使用C#(MVC)和SQL Server 2008。

您可以使用xsl将xml文件转换为SQL文件

比如:

<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:strip-space elements="*"/>
 <xsl:output method="text" omit-xml-declaration="yes"/>
 <xsl:template match="/">
    <xsl:text>&#10;</xsl:text>
    <xsl:for-each select="Filters">
        <xsl:apply-templates select="Filter" />
    </xsl:for-each>

 </xsl:template>
 <xsl:template match="Filter">
    <xsl:text>Select * from </xsl:text><xsl:value-of select="@Table"/>
    <xsl:text> WHERE </xsl:text><xsl:value-of select="@Column"/>
    <xsl:choose>
        <xsl:when test="@Predicate = 0"><xsl:text disable-output-escaping="yes"> &#62; </xsl:text></xsl:when>
        <xsl:when test="@Predicate = 1"><xsl:text disable-output-escaping="yes"> &#60; </xsl:text></xsl:when>
        <xsl:when test="@Predicate = 2"><xsl:text> = </xsl:text></xsl:when>
    </xsl:choose>
    <xsl:value-of select="@Value"/>
    <xsl:text>&#10;</xsl:text>
  </xsl:template>
</xsl:transform>



从中选择*
哪里
> 
< 
= 


这将转化为:

<Filters>
  <Filter Table="MyTable" Column="Total" Value="1234" Predicate="0"></Filter>
  <Filter Table="MyTable" Column="Total" Value="1234" Predicate="1"></Filter>
</Filters>

为此:

Select * from MyTable WHERE Total > 1234
Select * from MyTable WHERE Total < 1234
从总计>1234的MyTable中选择*
从总计小于1234的MyTable中选择*

第一部分是能够创建XML文档,我想您已经知道如何正确地创建XML文档了?其次,您必须在将查询发送到服务器之前对其进行解析。。。。查看这篇文章。最后,您必须从解析的内容构建查询字符串,并将其发送到SQL Server。您需要哪部分帮助?您好,是的,我可以创建XML并解析表名、列、值等。我需要一些关于如何设置存储过程以接收解析的值并将其作为SQL查询执行的帮助-非常感谢您可以使用C将其转换为SQL#为什么需要存储过程?我只是猜测存储过程,其思想是用户可以从网页构建自己的查询,并将其转换为可执行的SQL—谢谢
<Filters>
  <Filter Table="MyTable" Column="Total" Value="1234" Predicate="0"></Filter>
  <Filter Table="MyTable" Column="Total" Value="1234" Predicate="1"></Filter>
</Filters>
Select * from MyTable WHERE Total > 1234
Select * from MyTable WHERE Total < 1234