从 SQL Server 2005 中处理 XML
2007-05-13 09:26:22 来源:WEB开发网核心提示: -- T-SQL stored procedure definitionCREATE PROCEDURE insert_xml(@x XML)ASINSERT xmltab(xmlcol) VALUE(@x)// client-side codeusing System;using Sys
-- T-SQL stored procedure definition
CREATE PROCEDURE insert_xml(@x XML)
AS
INSERT xmltab(xmlcol) VALUE(@x)
// client-side code
using System;
using System.Data;
using System.Data.SqlClient;
void InsertXMLFromClient {
// get a connection string from a config file
string s = GetConnectStringFromConfigFile("xmldb");
using (SqlConnection conn = new SqlConnection(s))
using (SqlCommand cmd1 = new SqlCommand(
"INSERT xmltab(xmlcol) VALUES(@x)", conn))
using (SqlCommand cmd2 = new SqlCommand(
" insert_xml", conn))
{
string str = "<somedoc/>";
conn.Open();
// server-side conversion
cmd1.Parameters.Add("@x", SqlDbType.NVarChar);
cmd1.Parameters[0].Value = str;
cmd1.ExecuteNonQuery();
// client-side conversion works too
cmd2.CommandType = CommandType.StoredProcedure;
cmd2.Parameters.Add("@x", SqlDbType.Xml);
cmd2.Parameters[0].Value = s;
cmd2.ExecuteNonQuery();
}
}
三、文档、片段和 FOR XML 支持
SQL Server 2005 中的 XML 数据类型既支持 XML 文档,也支持 XML 文档片段。片段与文档的区别在于,片段能包含多个顶级元素和空文本节点。对于类型化的 XML 列/变量/参数,您可以使用 DOCUMENT(不允许片段)或 CONTENT(允许片段)规范指定是否允许片段。CONTENT 是默认值,非类型化的 XML 允许片段。以下 T-SQL 代码举例说明了对片段的支持:
CREATE TABLE xmltab (
id INT IDENTITY PRIMARY KEY,
xmlcol XML)
GO
-- insert a document
INSERT xmltab VALUES('<doc/>')
-- fragment, multiple top-level elements
INSERT xmltab VALUES('<doc/><doc/>')
-- fragment, bare text node
INSERT xmltab VALUES('Hello World')
-- even this fragment works
INSERT xmltab VALUES('<doc/>sometext')
SELECT ... FOR XML 也会生成 XML 片段。语句 SELECT job_id, min_lvl, max_lvl FROM jobs FOR XML AUTO 生成以下输出。请注意,有多个根元素。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接