.NET DataTable to SQL Server 저장 프로 시저는 XML로 프로 시저를 저장합니다

StackOverflow https://stackoverflow.com/questions/424626

  •  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 텍스트를 전달할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top