2012-02-02 90 views
1

我在SQL Server 2005中有一個列的數據類型爲xml的表。我創建了一個存儲過程以將值插入到該列中。通過存儲過程插入XML數據時出錯

但在C#代碼從調用SP時,它給我未能參數值從一個的XDocument轉換爲字符串錯誤

任何人都可以幫忙嗎?

這是存儲過程,我創建:

Create Procedure [dbo].[TestReportRepository_Save] 
@ReportExecutionTime datetime, 
@ReportFile xml, 

as 
begin 

insert into TestReportRepository(ReportExecutionTime,ReportFile) values(@ReportExecutionTime,@ReportFile) 

end 

的C#代碼是

DbParameter dbParam1 = dac.Parameter("@ReportExecutionTime", ReportExecutionTime, DbType.DateTime, ParameterDirection.Input); 
DbParameter dbParam2 = dac.Parameter("@ReportFile", xmlDoc.Document, DbType.Xml, ParameterDirection.Input); 

DbParameter[] dbParamColl = new DbParameter[] { dbParam1, dbParam2 }; 
long reportID = dac.Save("TestReportRepository_save", dbParamColl); 

請幫我鑑定一下我做錯了。

+0

如果您發佈的代碼,XML或數據樣本,**請**突出顯示文本編輯器的線,然後點擊「代碼(編輯器)工具欄上的「樣本」按鈕(「{}」),以精確地格式化和語法突出顯示它! – 2012-02-02 11:27:07

+3

在你的C#代碼中,你提供了參數的值?我沒有看到。基本上--XML類型的SQL Server是一個榮耀的字符串 - 它不能直接處理'XDocument' - 你必須將'XDocument'序列化爲一個字符串以將它傳遞給SQL Server(例如,使用''。 ToString()'方法) – 2012-02-02 11:33:28

+0

謝謝@marc_s:在發佈任何新問題時,我會記住你的建議。也感謝解決方案。 – 2012-02-02 13:22:08

回答

3

傳遞此參數時 - 不傳遞XDocument對象,而是傳遞其字符串表示形式。

對於XmlDocument的是XmlDocument.OuterXml,找到一個對的XDocument,並將它傳遞

+0

@mark_s對不起,我在寫答案的時候沒有注意到你的評論,如果你確定它是代表嫖娼 - 我會刪除答案 – 2012-02-02 11:42:22

+0

不用擔心:-)我只是不想把它擴展到「真實」的答案 - 你做到了 - 你值得信賴你的努力! – 2012-02-02 13:23:07

+0

@OlegDok有用的信息從你身邊。謝謝您的幫助。 – 2012-02-02 13:23:55