【问题标题】:XML web service not showing empty fieldsXML Web 服务不显示空字段
【发布时间】:2015-01-15 17:43:33
【问题描述】:

我正在用 .NET (C#) 开发一个 Web 服务,它以 XML 的形式显示 SQL 查询的结果。查询是:

return dbContext.data
.SqlQuery("SELECT a, b, c, d, e, f, g FROM person").ToList();

现在假设fg 在我的数据库中是null。在我的网络服务中,我得到了这个:

<person>
<a>'LU'</a>
<b>'1'</b>
<c>'JOHN'</c>
<d>'1'</d>
<e>'REP1'</e>
</person>

如您所见,字段 fg 未显示在 XML 结果中。由于我将此数据插入到 SQLite 数据库中,因此我还想获得空/空字段,因此数据库结构仍然相同。我想要这样的东西:

<person>
<a>'LU'</a>
<b>'1'</b>
<c>'JOHN'</c>
<d>'1'</d>
<e>'REP1'</e>
<f></f>
<g></g>
</person>

在此处发布之前,我已尝试在我的 SQL 查询中使用 ISNULL

return dbContext.data
.SqlQuery("SELECT a, b, c, d, e, ISNULL(f, null) as f, ISNULL(g,null) as g FROM person").ToList();

但它不起作用。知道如何获取 XML 中的所有字段,即使它们为空或为空?

【问题讨论】:

  • 我会翻译你的 ISNULL 用法:if f is null then null。您需要的是 ISNULL 方法的第二个参数中的空刺...我猜 :)
  • 如果f 是一个整数而不是一个字符串怎么办?
  • 用-1表示null;将 f 转换为字符串,返回空字符串或 'NULL' 等等。
  • 好吧,这行得通。谢谢!

标签: c# sql-server web-services sqlite


【解决方案1】:

使用 XMLELEMENT 它会根据请求返回一个空元素:

来自here的示例

SQL> select xmlelement("EMP", xmlelement("ENAME", ename), 
                            xmlelement("JOB", job),
                            xmlelement("MGR", mgr)
          ).getclobval() xml
     from scott.emp;

XML
----------------------------------------------------------------
<EMP><ENAME>KING</ENAME><JOB>PRESIDENT</JOB><MGR></MGR></EMP>
<EMP><ENAME>BLAKE</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR></EMP>
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多