sql - 将 XML 插入 SQL Server 2008 数据库

标签 sql sql-server xml xmltextwriter

您好,我正在尝试将一些 XML 数据插入到 SQL Server 2008 上的表中。但是我一直收到此错误;

XML parsing: line 1, character 39, unable to switch the encoding

数据库列 filemeta 使用 XML 数据类型,我已将编码切换为 UTF-16,我认为这是添加 XML 数据所必需的。

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', '<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');

救命,我卡住了。

注意:我使用 XMLTextWriter 创建了 XML。

最佳答案

是的,当您尝试将 XML 插入 SQL Server 2008 并且 XML 包含编码指令行时会出现问题。

我通常使用 CONVERT 函数,它允许我指示 SQL Server 跳过这些指令 - 使用类似这样的东西:

INSERT INTO testfiles
  (filename, filemeta) 
VALUES 
  ('test.mp3', CONVERT(XML, N'<?xml version="1.0" encoding="utf-16" standalone="yes"?>......', 2));

它确实帮助我将各种编码的 XML 内容导入 SQL Server。

参见 MSDN docs on CAST and CONVERT - 在页面下方有许多样式可以用于 CONVERT with XML 以及一些关于它们的解释。

关于sql - 将 XML 插入 SQL Server 2008 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628846/

相关文章:

sql - 如何: SQL or NOSQL?

php - 社交网络类型网站的规范化表

c# - 对于以 '{' 开头的名称,为什么 XName.Get 抛出 ArgumentException 而不是 XmlException ?

asp.net - 即使发现 nullException,仍继续运行代码

sql - 删除多条记录后如何优化表

mysql - 计数和子选择

c# - 从没有数据的查询中获取列名

java - JAXB 注释 - Marshall List<String[]>

c# - SqlCommand 如果存在 - 更新,如果不存在 - 插入

SQL Server : split record