2009-06-11 97 views
1

我已經有一個表3列(編號BIGINT,標題爲nvarchar(450),描述爲nvarchar(MAX)),在SQL 2008不能轉換Unicode數據轉換成XML列在SQL Server 2008

我決定轉換標題和描述列到一個XML列中。但嘗試更新得到許多錯誤,如「非法命名字符」或「非法限定名稱字符」等時

來解決這個問題,我只是創建亞音速2.1的Windows應用程序與下面的代碼

MyTable tbl = new MyTable(1111); 
tbl.myXMLcol = "<Person><Title><![CDATA[ " + HttpUtility.HtmlEncode(tbl.Title) + " ]]></Title><Description><![CDATA[ " + HttpUtility.HtmlEncode(tbl.Description) + " ]]></Description></Person>"; 
tbl.Save(); 

然後嘗試將​​添加到第一個上面的字符串中,該字符串出現「無法切換編碼」錯誤。

注:此外,我使用this method刪除非法字符,但不解決我的問題

注2:我試圖更新日本唱片認爲得到這個錯誤,但是對於英語正常工作。

你能幫我嗎。

謝謝。

+1

您使用的是什麼編碼? – 2009-06-11 17:13:01

回答

0

爲什麼不能做這一切直接在SQL Server?你可以試試這個:

UPDATE YourTable 
SET XmlCol = CAST(N'<Person><Title>' + Title + 
        N'</Title><Description>' + Description + 
        N'</Description></Person>' AS XML) 
WHERE ID = 12345 

這是否行得通?如果沒有,那麼也許這個呢?

UPDATE YourTable 
SET XmlCol = CONVERT(XML, N'<Person><Title>' + Title + 
          N'</Title><Description>' + Description + 
          N'</Description></Person>', 2) 
WHERE ID = 12345 

風格的「2」將刪除SQL Server不喜歡的關於XML的東西 - 比如DTD等等。也許這對你的情況也有幫助?

從外部導入XML時,我遇到過各種SQL Server的XML支持麻煩。通常情況下,這種或那種方式,它結束了工作,雖然:-)

馬克

+0

感謝您的回覆 但不適用於我的任何你的方法,我得到錯誤「非法的xml字符」 – Hamid 2009-06-11 17:49:30