.NET DataTable to SQL Server 저장 프로 시저는 XML로 프로 시저를 저장합니다
-
05-07-2019 - |
문제
확인. 그래서 나는 이것입니다. 추가 조작을 위해 저장된 절차로 전달하고 싶은 데이터 가능이 있습니다. 웹에서 몇 가지 내용을 읽었으며 데이터 가능을 XML로 변환 한 다음 저장 프로 시저로 전달할 수 있어야합니다. 내가 무엇을 잘못 기증하고 있습니까? SQL Server 2005가 있습니다. 데이터는 저장된 절차로 전달되지 않습니다.
Sub Test()
Dim dt As New DataTable
Fill datatable code omitted. there are 150 rows in the datatable after this
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim x As XmlDocument
x.LoadXml(dt.DataSet.GetXml)
Dim ta As New dsTestTableAdapters.TESTRxTableAdapter
ta.ProcessFile(x)
End Sub
저장된 절차는 다음과 같습니다 ...
ALTER PROCEDURE [dbo].[ProcessFile]
(
@x XML
)
AS
BEGIN
'DO STUFF HERE
END
해결책 2
확인. 이것이 제가 일하러가는 것입니다. 이것이 가장 좋은 방법인지는 모르겠지만 이것은 나에게 효과적입니다.
Sub Test
Dim ds as new DataSet ("Testds")
Dim dt as New DataTable("Testdt")
'Fill Datatable code omitted
Dim ta as new dsTest.TestTableAdapter
'TableAdapter returns a datatable to ensure that the stored procedure worked
ta.AddDataToDB(dt,ds.GetXML)
Me.DataGridView1.DataSource=dt
End Sub
저장된 절차는 다음과 같습니다.
CREATE PROCEDURE [dbo].[AddDataToDB]
(
@x XML
)
AS
BEGIN
DECLARE @data TABLE (
TestCol1 VARCHAR(50),
[TestCol2] VARCHAR(50),
[TestCol3] VARCHAR(50),
)
INSERT INTO @data (
[TestCol1],
[TestCol2],
[TestCol3]
)
SELECT
xmlVals.rowvals.query('TestCol1').value('.','VARCHAR(50)'),
xmlVals.rowvals.query('TestCol2').value('.','VARCHAR(50)'),
xmlVals.rowvals.query('TestCol3').value('.','VARCHAR(50)')
FROM
@x.nodes('/Testds/Testdt') as xmlVals(rowvals)
SELECT * FROM @data
END
다른 팁
과거에는 비슷한 일을했지만 SQL 2000으로 수행했습니다. SQL 2000에는 XML 데이터 유형이 없었으므로 NText 매개 변수를 통해 저장 프로 시저를 통해 SP_XML_PREPAREDOCUMUTE 및 SP_XML_REMOVEDOCUMUTE을 사용하여 처리 된 프로 시저를 통해 DataSet.getXml에서 출력을 수신해야했습니다. 프로세스가 당신을 위해 작동해야합니다.
텍스트와 함께 XMLDocument를로드 할 필요가 없으며 저장 프로 시저와 마찬가지로 XML 텍스트를 전달할 수 있습니다.
제휴하지 않습니다 StackOverflow