有人可以提供一個如何從C#發送xml到SQL Server的示例,然後在獲取它的存儲過程中的xml上循環,並逐行更新或輸入。發送xml到sql
回答
查看關於SQL XML的三部分系列15秒:http://www.15seconds.com/Issue/050803.htm。
我個人使用SQL XQuery函數將你的XML碎片分解成零碎和存儲在SQL Server中。
如果你有這樣的:
<data>
<person>
<name>Jones</name>
<firstname>Peter</firstname>
</person>
<person>
<name>Smith</name>
<firstname>Frank</firstname>
</person>
<data>
你可以寫這樣的:
SELECT
Data.Person.value('(name)[1]', 'varchar(20)') as 'Name',
Data.Person.value('(firstname)[1]', 'varchar(20)') as 'First Name'
FROM
@XmlVar.nodes('/data/person') As Data(Person)
所以基本上,.nodes
功能碎片您的XML轉換爲 「僞表」 Data.Person
- 每個<person>
條目成爲表格中的一行。
使用.value()
函數,您可以從這些粉碎的XML節點中提取單個值。您現在有一堆varchar(20)字段,可以是例如插入表中。
如果您的XML相當小(幾百個條目),此方法運行良好。如果您有大量的XML文件,則可能需要調查其他方法,例如XML Bulkload。
聽起來像我在找什麼。 TY – 2010-05-03 11:52:26
我做了很多假設,因爲你的問題不清楚。
你可以做的是在SQL Server中創建一個接受字符串參數的存儲過程。該字符串應該包含您想要處理的Xml。有關處理XML的可能存儲過程,請參閱以下代碼片段。
CREATE PROCEDURE [dbo].[sproc_ProcessXml]
(
@data AS NTEXT
)
AS
/* Create a temporary table to insert the Xml data*/
IF (OBJECT_ID(N'tempdb..#temp') IS NOT NULL)
DROP TABLE #temp
CREATE TABLE [dbo].[#temp]
(
/* your table definition */
)
DECLARE @handle AS INTEGER
DECLARE @flags AS INTEGER
EXEC sp_xml_preparedocument @handle OUTPUT, @data
/* Supported is only element mapping */
SET @flags = 2
INSERT INTO [dbo].[#temp]
SELECT [Insert xml fields]
FROM OPENXML (@handle, '[Xpath in XmlDocument', @flags)
WITH (Id INTEGER)
EXEC sp_xml_removedocument @handle
/* Select data from Xml and from several normal tables if needed */
SELECT [Insert your Fields]
FROM dbo.[#temp] t
DROP TABLE [dbo].[#temp]
RETURN
哇...我的新代碼。你能解釋一下這裏發生了什麼嗎? TY。 – 2010-05-03 08:15:37
-1適用於不使用XML數據類型的舊式XML處理。 – 2012-02-27 17:31:14
- 1. 發送XML到WebService
- 2. 發送xml到服務器
- 3. 發送XML到web服務
- 4. 發送郵件xml到REST
- 5. 從ActionScript發送xml到PHP
- 6. 從XML發送XML到PHP腳本AS2
- 7. 不發送到SQL空間
- 8. wcf發送linq到sql DataContext
- 9. SQL異常從jtable發送值到sql
- 10. 發送XML從IOS
- 11. 發送xml數據到WCF REST服務
- 12. 發送後標籤到WordPress XML-RPC
- 13. 發送所有.xml請求到代理
- 14. Silverlight的發送大型XML到WCF
- 15. 如何發送XML到PHP頁面
- 16. 發送XML數據到電子郵件
- 17. 從動作腳本發送XML到Servlet
- 18. 發送XML到PHP服務器與Android
- 19. 在Rails中發送xml到Twilio
- 20. 發送從Windows到xbuntu的xml文件
- 21. 使用python發送xml文件到http
- 22. 將表單數據發送到XML
- 23. 發送一個xml消息到端口
- 24. 發送HTML Texarea內容到XML文件
- 25. 發送GPS座標XML到服務器
- 26. Symfony2將XML發送到遠程URL
- 27. 將原始xml發送到Web服務
- 28. XMLHttpRequest發送XML到PHP服務器
- 29. Android將XML發送到PHP頁面
- 30. 將XML文件發送到客戶端
SqlServer的哪個版本?較新的版本有'xml'數據類型。 – 2010-05-03 08:06:06
sql版本2005 – 2010-05-03 08:21:36