codici

Dati in formato XML direttamente da SQL Server

0 Flares 0 Flares ×
FacebookTwitterGoogle+tumblrLinkedIn

Se abbiamo la possibilità di avere come database relazionale Sql Server 2000, questo ci mette a disposizione un’istruzione Transact-SQL per poter recuperare i dati in formato XML direttamente da SQL Server.

Tutto ciò avviene attraverso la clausola FOR XML
Questa clausola ha tre modalità
1. RAW
2. AUTO
3. EXPLICIT

La modalità RAW restituisce ogni riga sotto forma di XMLELEMENT e bisogna specificare la clausola BINARY64 per farsi restituire i dati sotto forma di Base64 per esempio, quando si vogliono recuperare i campi BLOBB.

Esempio

SELECT * FROM Orders WHERE ID=23 FOR XML RAW
SELECT Immagine from Orders WHERE ID=23 FOR XML RAW,BINARY64

Con la modalità AUTO invece sono restituiti i dati come elementi nidificati.

Esempio

SELECT * FROM Orders WHERE FOR XML AUTO

Con la modalità EXPLICIT c’è la possibilità, di definire il formato del documento XML, pertanto tutti elementi devono essere definiti in modo esplicito.

Per recuperare i dati come documenti XML in .NET dobbiamo definirci un nostro SqlCommand (visto che utilizziamo SQL, utilizzeremo il namespace SqlClient) impostando la CommandText adeguata.

Nell’esempio seguente si suppone che si sia già impostata una connessione corretta.
Quindi importiamo il namespace per gestire l’’accesso al database e definiamo il nostro SqlCommand:

Using System.Data.SqlClients;
SqlCommand command = new SqlCommand();
command.CommandText="SELECT * form Orders FOR XML AUTO";

Per eseguire quest’istruzione Transact-SQL abbiamo a disposizione un metodo della SqlCommand, ExecuteXMLReader:

Questo metodo restituisce proprio un’oggetto XmlReader quindi faremo:

System.XML.XmlReader reader = command.ExecuteXMLReader();

In questo modo avremo il nostro file XML che gestiremo con l’oggetto XMLReader.

FacebookTwitterGoogle+tumblrLinkedIn

Lascia un Commento

L'indirizzo email non verrà pubblicato.

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

0 Flares Twitter 0 Facebook 0 Google+ 0 Pin It Share 0 LinkedIn 0 0 Flares ×