将XML插入SQL Server 2008数据库中
-
26-09-2019 - |
题
您好,我试图将一些XML数据插入SQL Server 2008上的表中。但是,我一直被抛出此错误。
XML解析:第1行,字符39,无法切换编码
数据库列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>');
帮助,我被困。
NB:我用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文档以及转换 - 在页面上有点款式,您可以使用多种样式 CONVERT
和 XML
以及关于它们的一些解释。
其他提示
您只需要包括 n 在XML字符串的前面使其成为Unicode。
INSERT INTO testfiles
(filename, filemeta)
VALUES
('test.mp3', N'<?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>');
这对我有用而没有任何错误:
DECLARE @input XML
SET @input = N'<?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>'
INSERT INTO testfiles (filename, filemeta)
VALUES ('test.mp3', @input);
不隶属于 StackOverflow