kgmmurugesh Ответов: 1

Результат Sql - запроса отличается между ssms и VB.NET код!


Я использую следующий запрос в SSMS, он будет показывать результат, но я использую этот запрос в vb.net кодирование он покажет другой результат. Мне нужен результат ssms.

выберите unit_name, Unit_PrintName из unit_table для xml-пути('customer'), root('erpimportdata')


<erpimportdata>
<клиент>
<unit_name>Doz > & A
&ЛТ;unit_printname&ГТ;доз

<клиент>
<unit_name>Abc
&ЛТ;unit_printname&ГТ;Азбука

<клиент>
<unit_name>Zzzzzzzz
<unit_printname>Zzzzzzzz

<клиент>
&ЛТ;unit_name&ГТ;Сос
&ЛТ;unit_printname&ГТ;Сос




РЕЗУЛЬТАТ РАБОТЫ VB.NET КОД.
&ЛТ;?в XML версия="1.0" автономных="да"?&ГТ;
<newdataset>

<xml_f52e2b61-18a1-11d1-b105-00805f49916b><erpimportdata><customer><unit_name>Doz &gt; &amp; A</unit_name><Unit_PrintName>Doz</Unit_PrintName></customer><customer><unit_name>Abc</unit_name><Unit_PrintName>Abc</Unit_PrintName></customer><customer><unit_name>Zzzzzzzz</unit_name><Unit_PrintName>Zzzzzzzz</Unit_PrintName></customer><customer><unit_name>Nos</unit_name><Unit_PrintName>Nos</Unit_PrintName></customer></erpimportdata>



Что я уже пробовал:

Dim ldb As New kgmtools.clsDB
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim sql As String
    sql = "select unit_name, Unit_PrintName from unit_table for xml path('customer'),  root('erpimportdata')"


    ldb.OpenDB("kgmmurugesh\kgmexpress", "kgmerp_abc")
    Writetoxml(ldb, sql, "d:\storesdata.xml")
    End

End Sub



Private Sub Writetoxml(ByVal pdb As kgmtools.clsDB, ByVal pstrquery As String, ByVal pstrfilename As String)
    Try

        Dim ldataset As New DataSet
        Dim ldataadapter As SqlDataAdapter


        ldataadapter = New SqlDataAdapter(pstrquery, pdb.DBConnect)
        ldataadapter.Fill(ldataset)
        ldataset.WriteXml(pstrfilename)

    Catch ex As Exception
        MsgBox(ex.Message.ToString)
    End Try
End Sub

1 Ответов

Рейтинг:
0

OriginalGriff

Ну да. А чего ты ожидал?
Вы не делаете то же самое с обеими системами.
SQL-запрос возвращает тот же XML в SSMS, что и запрос в VB-коде: но вы относитесь к нему по-другому, и WriteXML имеет больше информации для вывода, чем просто "сырая" XML-строка: для начала он имеет имя столбца "xml_f52e2b61-18a1-11d1-b105-00805f49916b"!
Если вы хотите сохранить XML, то вам нужно обрабатывать необработанные данные, а не просто писать набор данных.


kgmmurugesh

Мне нужна необработанная xml-строка. Но я хочу, чтобы это был xml-файл.

OriginalGriff

И что мешает вам обернуть необработанные XML-данные в заголовок XML-файла?

kgmmurugesh

&ЛТ;?в XML версия="1.0" автономных="да"?&ГТ;
<newdataset>

&ЛТ;xml_f52e2b61-18a1-11d1-В105-00805f49916b&ГТ;&ЛТ;erpimportdata&ГТ;&ЛТ;подряд unit_name="нос" Unit_PrintName="нос"/&ГТ;&ЛТ;/erpimportdata&ГТ;




Он переведет тег в <. Поэтому я не могу прочитать файл.

kgmmurugesh

Я хочу, чтобы erpimportdata был новым элементом.