SQL Server 中的XML支持,查询返回XML,Web访问SQL取XML形式结果
2007-06-18 14:56
260 查看
使 SQL Server 查询结果转化成 XML 字符串
1 在 SQL 语句后使用 for xml 子句。
[ FOR { XML { RAW | AUTO }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ] } ]
将得到一个无根节点的XML片断。
1.1 for xml raw
结果为 <row 列名="value" 列名="value" ... /><row ... />...
1.2 for xml auto
结果为 <表名 列名="value" 列名="value" ... /><表名 ... />...
1.3 for xml raw,xmldata
结果为 <Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name=".." content=".." model="..">
<AttributeType name=".." dt:type=".."/>
<AttributeType name=".." dt:type=".."/>
<Att......
1.3.1 for xml auto,xmldata
<ElementType/>内为<element/>
1.4 elements使列作为子元素返回,binary base64采用base64编码表示二进制数据。
使用 HTTP 访问 SQL Server 并返回XML数据
1 安装 IIS5.1 和 SQL Server 2000 以上版本。
2 使用SQL Server 的 '在 IIS 中配置SQL XML 支持' 工具创建一个虚拟目录。
2.1 在 '常规' 选项卡 输入 虚拟目录 名称,例如 Test。
2.2 在 '安全性' 输入账号密码等等身份验证信息。
2.3 '数据源' 可以选择要连接的数据库。
2.4 '设置'选项卡里面有些细则,默认只有一个允许模板。
2.4.1 如果想用url?sql=sqlString 或者 url?sql=<?xml?><r>sqlString</r>,则选择好 '允许sql=或...的URL查询'。
2.4.2 XPATH允许在URL后使用xpath表达式过滤得到的数据,POST允许通过表达提交查询。
2.5 在URL中指定数据库和表的名称。
2.5.1 在'虚拟名称'中创建相应的虚拟名称,如'http://localhos/database/table/...'。
3 使用 SQL XML 进行查询。
3.1 使用 GET 提交,在 URL 后附加 SQL 语句: http://localhos/test?sql=select+*+from+table+for+xml+auto&root=root root=root可以指定根节点<root/>,否则会得到一个没有根节点的xml片断。
3.2 使用 XML模板 进行查询。
3.2.1 直接在 URL 中指定模板。 http://localhos/test?template=<root+xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>select+*+from+table+for+xml+auto</sql:query></root> URL 中附加模板存在安全和长度限制,可以使用模板文件。
3.2.2 使用模板文件,例:
建立一个文本文件tmp.xml
<?xml version="1.0" ?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query>
select * from table for xml auto
</sql:query>
</root>
存放在虚拟目录test内。
使用URL 'http://localhos/test/tmp.xml' 便可以得到结果。
3.2.2.1 使用XPATH http://localhos/test/tmp.xml/col[@att="1"] '...tmp.xml/'后即可以接xpath表达式进行筛选,语法和普通xml中一样。
1 在 SQL 语句后使用 for xml 子句。
[ FOR { XML { RAW | AUTO }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ] } ]
将得到一个无根节点的XML片断。
1.1 for xml raw
结果为 <row 列名="value" 列名="value" ... /><row ... />...
1.2 for xml auto
结果为 <表名 列名="value" 列名="value" ... /><表名 ... />...
1.3 for xml raw,xmldata
结果为 <Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name=".." content=".." model="..">
<AttributeType name=".." dt:type=".."/>
<AttributeType name=".." dt:type=".."/>
<Att......
1.3.1 for xml auto,xmldata
<ElementType/>内为<element/>
1.4 elements使列作为子元素返回,binary base64采用base64编码表示二进制数据。
使用 HTTP 访问 SQL Server 并返回XML数据
1 安装 IIS5.1 和 SQL Server 2000 以上版本。
2 使用SQL Server 的 '在 IIS 中配置SQL XML 支持' 工具创建一个虚拟目录。
2.1 在 '常规' 选项卡 输入 虚拟目录 名称,例如 Test。
2.2 在 '安全性' 输入账号密码等等身份验证信息。
2.3 '数据源' 可以选择要连接的数据库。
2.4 '设置'选项卡里面有些细则,默认只有一个允许模板。
2.4.1 如果想用url?sql=sqlString 或者 url?sql=<?xml?><r>sqlString</r>,则选择好 '允许sql=或...的URL查询'。
2.4.2 XPATH允许在URL后使用xpath表达式过滤得到的数据,POST允许通过表达提交查询。
2.5 在URL中指定数据库和表的名称。
2.5.1 在'虚拟名称'中创建相应的虚拟名称,如'http://localhos/database/table/...'。
3 使用 SQL XML 进行查询。
3.1 使用 GET 提交,在 URL 后附加 SQL 语句: http://localhos/test?sql=select+*+from+table+for+xml+auto&root=root root=root可以指定根节点<root/>,否则会得到一个没有根节点的xml片断。
3.2 使用 XML模板 进行查询。
3.2.1 直接在 URL 中指定模板。 http://localhos/test?template=<root+xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>select+*+from+table+for+xml+auto</sql:query></root> URL 中附加模板存在安全和长度限制,可以使用模板文件。
3.2.2 使用模板文件,例:
建立一个文本文件tmp.xml
<?xml version="1.0" ?>
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query>
select * from table for xml auto
</sql:query>
</root>
存放在虚拟目录test内。
使用URL 'http://localhos/test/tmp.xml' 便可以得到结果。
3.2.2.1 使用XPATH http://localhos/test/tmp.xml/col[@att="1"] '...tmp.xml/'后即可以接xpath表达式进行筛选,语法和普通xml中一样。
相关文章推荐
- 将SQL查询结果以字符串形式返回
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
- SQL SERVER中 用FOR XML PATH将查询结果以XML输出 然后应用于 sql 合并字段功能介绍
- 使用mysql_fetch_object()以对象的形式返回查询结果
- 使用FOR XML将查询结果以XML格式返回(Using the FOR XML Clause to Return Query Results as XML)
- Transact-SQL 参考 返回并允许要查询的 Microsoft® SQL Server™ 版本信息
- SQL 查询结果为 XML
- 麻烦问一下单字段按查询结果精度返回结果,思路怎么做(除sql 的union合并)
- 如何从页面输入SQL查询条件得到后台结果返回前台页面
- Hibernate原生sql查询返回结果问题
- SQL多表查询结果返回实体结果集
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
- SQL Server中执行Sql字符串,返回执行结果
- Python Sqlite3以字典形式返回查询结果的实现方法
- 有点奇怪!SQL中子查询存在语法错误居然能返回结果?!
- SQL查询日期条件则无法返回正常结果
- 小议sql查询返回xml数据之应用【转载】
- Hibernate Native SQL查询常用的2种方法及对返回结果处理