myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Datentechnologien » Daten aus DB in ein XML einlesen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Daten aus DB in ein XML einlesen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm


Anna85 ist offline

Daten aus DB in ein XML einlesen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

verwendetes Datenbanksystem: <MSSQl Server>

Hallo,
falsch ich hier falsch bin, bitte mitteilen.

Ich bin totale Anfängerin, ich kann kaum programmieren, aber ich habe schon was gemacht.
Ich habe eine Tabelle mit 5 Spalten in meinem MSQL Server.
Ich habe eine XML Schema.
Ich muss die Daten aus der Tabelle in dieser XML Schema einspielen.
Ich habe gelesen, ich kann das mit Skalarfunktion machen, aber es funktioniert nicht, es lädt 0 Zeilen, also es ist was falsch (es kommt kein Fehler!:-))

Könnte mir jemand Schritt für Schritt sagen, wie ich das machen kann?

Viele Grüße aus Ulm
Anna
Neuer Beitrag 05.06.2019 09:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Coffeebean Coffeebean ist männlich
myCSharp.de-Team

avatar-3295.gif


Dabei seit: 25.08.2011
Beiträge: 2.185
Entwicklungsumgebung: VS 2005-2017, VS Code
Herkunft: Deutschland/Schweiz


Coffeebean ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Anna85,

Naja, im einfachsten Fall machst du dir eine Konsolenapplikation, die die MSSQL-Datenbank ausliest, die Daten eventuell mappt und dann in dein XML schreibt.

Was hast du denn bisher gemacht? Hast du Code für uns?

Gruss

Coffeebean
Neuer Beitrag 05.06.2019 10:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
gfoidl gfoidl ist männlich
myCSharp.de-Team

avatar-2894.jpg


Dabei seit: 07.06.2009
Beiträge: 6.600
Entwicklungsumgebung: VS 2019
Herkunft: Waidring


gfoidl ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Anna85,

geht es um das selbe Problem wie bisher od. ist es ein Neues?

mfG Gü
Neuer Beitrag 05.06.2019 13:23 Beiträge des Benutzers | zu Buddylist hinzufügen
Urza Urza ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.05.2019
Beiträge: 28
Entwicklungsumgebung: VS 2017, VS 2019, ReSharper


Urza ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Anna85,

wie sieht denn das XML-Schema und die Struktur der Tabelle aus?
Muss das ein automatisierter Prozess werden?

Im einfachsten Fall setzt du eine Query im SSMS ab und kopierst das Ergebnis in eine Datei.
Könnte dann je nach XML-Schema so aussehen:

Code:
1:
2:
3:
SELECT [Column1], [Column2], ...
FROM [dbo.MyTable]
FOR XML PATH('Entry'), ROOT('Entries')
Neuer Beitrag 05.06.2019 14:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm

Themenstarter Thema begonnen von Anna85

Anna85 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich versuche es alleine zu machen und passiert schon was, allerdings habe ich eine Frage.
Normalweise hatte ich bei XML Schema nur solche Felder Name, wie <v1:alternative> oder so was, und jetzt habe ich doppelte name:<commons:address1> . Ist das auch eine Name des Felders????
Neuer Beitrag 06.06.2019 09:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm

Themenstarter Thema begonnen von Anna85

Anna85 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich frage so ab:

Code:
1:
2:
3:
SELECT name, adresse
from tabtest main
		FOR XML PATH('adresse1'), ROOT('externeadresse')

und bekomme ich , wie gewünscht:

Code:
1:
2:
3:
4:
5:
6:
<externeadresse>
  <adresse>
    <name>Al-Adudi Hospital</ name>
    < adresse1>Organisation</ adresse>
 </adresse>
</externeadresse>

Aber meine XML Schema soll so aussehen:, die felder address1 und address2 habe ich auch in der Tabelle, aber ich weiss es nicht, wie ich das abfragen soll, damit es so aussieht:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<externeadresse>
  <adresse>
    <name>Al-Adudi Hospital</name>
    < adresse1>Organisation</adresse1>
    <contactAdress>
             <commons:address1> test1 </commons:address1> 
              <commons:address2> test2 </commons:address2> 
    </contactAdress>
    </adresse1>
</externeadresse>

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Anna85 am 06.06.2019 11:03.

Neuer Beitrag 06.06.2019 11:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Urza Urza ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.05.2019
Beiträge: 28
Entwicklungsumgebung: VS 2017, VS 2019, ReSharper


Urza ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Anna85,

ich würde es mal so versuchen:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
USE MyDB;

WITH XMLNAMESPACES ('commons' as commons)
SELECT name,
adresse1,
adress1 as 'contactAdress/commons:adress1',
adress2 as 'contactAdress/commons:adress2'
FROM [dbo.MyTable]
FOR XML PATH('adresse'), ROOT('externeadresse')

Das liefert bei mir einen solchen output:

XML-Code:
<externeadresse xmlns:commons="commons">
  <adresse>
    <name>a</name>
    <adresse1>b</adresse1>
    <contactAdress>
      <commons:adress1>e</commons:adress1>
      <commons:adress2>d</commons:adress2>
    </contactAdress>
  </adresse>
  <adresse>
    <name>f</name>
    <adresse1>g</adresse1>
    <contactAdress>
      <commons:adress1>h</commons:adress1>
      <commons:adress2>i</commons:adress2>
    </contactAdress>
  </adresse>
</externeadresse>

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Urza am 06.06.2019 11:23.

Neuer Beitrag 06.06.2019 11:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stefan.Haegele Stefan.Haegele ist männlich
myCSharp.de-Mitglied

avatar-3068.jpg


Dabei seit: 13.03.2009
Beiträge: 358
Entwicklungsumgebung: Visual Studio 2010 Ultimat
Herkunft: Untermeitingen


Stefan.Haegele ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Urza:
Code:
1:
2:
3:
4:
5:
6:
SELECT name,
adresse1,
adress1 as 'contactAdress/commons:adress1',
adress2 as 'contactAdress/commons:adress2'
FROM [dbo.MyTable]
FOR XML PATH('adresse'), ROOT('externeadresse')

Und was machst du wenn es nur 1 Adresse gibt oder gar 3 oder 4? Du hast hier (normalerweise) eine 1:n Beziehung in der Datenbank, welche du hart auf 2 Einträge münzt.. Hier sind Fehler vorprogrammiert.

Des Weitern muss ich gestehen, dass ich es von Anna85 ein wenig unverschämt finde, wie Sie hier versucht das Forum als Codegenrator zu missbrauchen.

@Anna85: Ich würde dir empfehlen weniger auf Youtube Videos zur Lösung von *einem* Problem zu gehen und vielmehr ein gutes Buch in die Hand nehmen und dir die Grundlagen anzueignen damit du die Probleme *selbst* lösen kannst. Code kopieren welchen du nicht verstehts löst dein Problem nicht wirklich

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Stefan.Haegele am 07.06.2019 07:31.

Neuer Beitrag 07.06.2019 07:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Urza Urza ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.05.2019
Beiträge: 28
Entwicklungsumgebung: VS 2017, VS 2019, ReSharper


Urza ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey Stefan,

in der Fragestellung ist explizit die Rede von einer Tabelle mit 5 Spalten.
Bei einer 1:n Beziehung würde ich auch nicht das erwarten:

XML-Code:
   <contactAdress>
             <commons:address1> test1 </commons:address1>
              <commons:address2> test2 </commons:address2>
    </contactAdress>

sonder:

XML-Code:
   <contactAdress>
             <commons:address> test1 </commons:address>
              <commons:address> test2 </commons:address>
    </contactAdress>
Neuer Beitrag 07.06.2019 08:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stefan.Haegele Stefan.Haegele ist männlich
myCSharp.de-Mitglied

avatar-3068.jpg


Dabei seit: 13.03.2009
Beiträge: 358
Entwicklungsumgebung: Visual Studio 2010 Ultimat
Herkunft: Untermeitingen


Stefan.Haegele ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey Urza,

deshalb habe ich auch *normalerweise* geschrieben - denn deine Lösung löst dem TE nur dieses Problem - für die Zukunft hat er das nächste Problem wenn er auf 1:n umstellt... Deswegen auch der Hinweis an den TE sich die Grundlagen anzueignen und nicht nur Code kopieren....

VG
Stefan

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Stefan.Haegele am 07.06.2019 08:38.

Neuer Beitrag 07.06.2019 08:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Urza Urza ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.05.2019
Beiträge: 28
Entwicklungsumgebung: VS 2017, VS 2019, ReSharper


Urza ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey Stefan,

jede Lösung muss angepasst werden wenn auf 1:N umgestellt wird. Entweder muss der Quellcode geändert werden oder in meinem Lösungsvorschlag noch ein subselect eingefügt werden.

Ich denke auf das können wir uns einigen Augenzwinkern :

Zitat:
Deswegen auch der Hinweis an den TE sich die Grundlagen anzueignen und nicht nur Code kopieren....

VG
Matthias
Neuer Beitrag 07.06.2019 09:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm

Themenstarter Thema begonnen von Anna85

Anna85 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten Morgen,

vielen lieben Dank, ich habe zu meine irig angepasst und es funktioniert. Das ist ja toll!!!

In meinem orig Schema, ist noch so was: v1 :

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<v1:externeadresse>
  <v1:adresse>
    <v1:name>Al-Adudi Hospital</v1:name>
    < v1:adresse1>Organisation</v1:adresse1>
    <v1:contactAdress>
             <commons:address1> test1 </commons:address1> 
              <commons:address2> test2 </commons:address2> 
    </v1:contactAdress>
    </v1:adresse1>
</v1:externeadresse>

Ich habe eingfach versucht in dem Code, so zu schreiben:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
Use ds-org;
WITH XMLNAMESPACES ('commons' as commons)
SELECT name,
adresse1,
adress1 as 'v1:contactAdress/commons:adress1',
adress2 as 'vi:contactAdress/commons:adress2'
FROM [organisationen]
FOR XML PATH('adresse'), ROOT('externeadresse')

Aber bekomme ich Fehler, wie klann ich das v1 definieren?

Lieben Dank!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Anna85 am 07.06.2019 11:12.

Neuer Beitrag 07.06.2019 11:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm

Themenstarter Thema begonnen von Anna85

Anna85 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das obere Beitrag habe ich gelöst, danke!
Neuer Beitrag 07.06.2019 11:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm

Themenstarter Thema begonnen von Anna85

Anna85 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe letzte Schwerpunkt:

ein Punkt in meinem Schema ist noch so definiert, erste Zeile:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<v1:externeadresse id="external_org_id1" type ="organ">
  <v1:adresse>
    <v1:name>Al-Adudi Hospital</v1:name>
    < v1:adresse1>Organisation</v1:adresse1>
    <v1:contactAdress>
             <commons:address1> test1 </commons:address1> 
              <commons:address2> test2 </commons:address2> 
    </v1:contactAdress>
    </v1:adresse1>
</v1:externeadresse>

Wie kann ich es für meine Schema das Punkt abfragen?

Und Zweite Frage hätte ich, ist das id in der erste Zeile eine Zahl, die aus der Tabelle zurückkommen soll?
Ich habe noch 2 Spalten in meine Tabelle, aber ich weiss es nicht, ob das die Werte aus der TAbelle sein sollen???

Liebe Grüße!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Anna85 am 07.06.2019 11:42.

Neuer Beitrag 07.06.2019 11:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Urza Urza ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.05.2019
Beiträge: 28
Entwicklungsumgebung: VS 2017, VS 2019, ReSharper


Urza ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Anna85,

Zitat:
Und Zweite Frage hätte ich, ist das id in der erste Zeile eine Zahl, die aus der Tabelle zurückkommen soll?
Ich habe noch 2 Spalten in meine Tabelle, aber ich weiss es nicht, ob das die Werte aus der TAbelle sein sollen???

Diese beiden Fragen kann ich dir auch nicht beantworten.

Zu dem ersten Punkt:
Ein Attribut (also "id" und "type") zu erzeugen geht bspw. so:

Code:
1:
SELECT [Column1] as '@id' .....

Das müsstest du noch hiermit kombinieren:  Zurückgeben von Ergebnissen innerer FOR XML-Abfragen als XML-Typinstanzen an äußere Abfragen
Dein bisheriger code wird dabei größtenteils die innere SELECT-Abfrage sein.
<v1:externeadresse> und die beiden Werte für "id" und "type" gehören in den äußeren Bereich der Abfrage.
Neuer Beitrag 07.06.2019 12:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Stefan.Haegele Stefan.Haegele ist männlich
myCSharp.de-Mitglied

avatar-3068.jpg


Dabei seit: 13.03.2009
Beiträge: 358
Entwicklungsumgebung: Visual Studio 2010 Ultimat
Herkunft: Untermeitingen


Stefan.Haegele ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Anna85:

Nochmals, glaubst du nicht, dass es einfacher ist, wenn du dir erst einmal die absoluten Basics aneignest - dein Try and Error Prinzip wird dir nicht weiterhelfen. Du kopiert Code, den du nicht verstehst - dies ist *nicht* zielführend!
Neuer Beitrag 07.06.2019 12:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Anna85 Anna85 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.04.2019
Beiträge: 53
Herkunft: Ulm

Themenstarter Thema begonnen von Anna85

Anna85 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi, hast du volkomm Recht, ich kann zu Weiterbildung für eine Woche gehen, der Kurs startet im September, auch im Juli.
Leider ich habe Zeit bis nächste Woche Di, deshalb versuche ich das auf Basis von der Info, was ich hier bekomme meine Daten in der Schema zu bekommen.

Viele Grüße
Neuer Beitrag 07.06.2019 13:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 5 Monate.
Der letzte Beitrag ist älter als 5 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.11.2019 08:35