0

我使用了 MS 的这份白皮书作为参考: http: //msdn.microsoft.com/en-us/library/ms345117 (v=sql.90).aspx

但是,当我尝试以下查询时出现错误:

    command = new SqlCommand(
    "SET QUOTED_IDENTIFIER ON SELECT XML FROM XMLObject WHERE" + 
    "XML.exist('//Root/ActiveRecord[" + s1 + 
    "= " + s2 + "]') = 1"
    , connection);

错误是:““。”附近的语法错误。

如果我删除“XMLObject”之后的所有内容直到逗号,我就能够执行该命令,并且如果数据库中存在元素,则返回一些内容。

我也很好奇我是否以正确的方式设置 QUOTED_IDENTIFIER 值。

我可能会看到的任何 C#/MSSQL 示例项目/教程也将不胜感激!

编辑:对于看到这一点的任何人,我还发现使用存在的正确方法是:

    "...exist('/Root/ActiveRecord[" + s1 + 
    "= \"" + s2 + "\"]') = 1"

没有 "s 唯一的数字比较工作。

4

2 回答 2

0

您应该避免通过连接字符串来构建 SQL,因为它存在 SQL 注入漏洞。ON 后需要一个分号。您的列数据类型必须是 xml,或者您必须将其转换为 xml。

于 2012-05-02T17:26:43.480 回答
0

WHERE我认为您在and之间缺少空格XML

command = new SqlCommand(
    "SET QUOTED_IDENTIFIER ON SELECT XML FROM XMLObject WHERE " + // Note space
    "XML.exist('//Root/ActiveRecord[" + s1 + 
    "= " + s2 + "]') = 1"
    , connection);
于 2012-05-02T17:28:03.500 回答