Una classe .NET per gestire le immagini con SQL Server
Pagina 1 di 4
Spesso i tipi di dati che ci troviamo ad elaborare non sono limitati a stringhe e numeri. Può capitare di avere l’esigenza di memorizzare sul database grandi quantità di dati sotto forma di documenti, file XML, foto, ecc. A questo scopo SQL Server (a partire dalla versione 2005) mette a disposizione speciali tipi di dati, per la gestione dei cosiddetti Binary Large Objects (BLOBs), dati binari di grandi dimensioni:
- Varbinary(MAX) e Image – Per la gestione di immagini
- Varchar(MAX) e Text – Per la gestioni di testi
- NVarchar(MAX) e NText – Per la gestione di testi con caratteri UNICODE
- Xml – Per la gestione di file XML
I tipi Text, NText e Image provengono dalle versioni precedenti di SQL Server ed il loro utilizzo viene sconsigliato. E’ opportuno utilizzare al loro posto i nuovi tipi Varchar(MAX), NVarchar(MAX) e Varbinary(MAX).
I dati binari (BLOB), come detto in precedenza, si presentano in varie forme: documenti Word, PDF, foto, immagini e via dicendo. Quando in un’applicazione .NET è necessario gestire questi tipi di dati esistono due alternative: memorizzare i dati come file su disco o memorizzare i file direttamente all’interno del database.
Entrambe le opzioni presentano pro e contro. Il primo approccio è preferibile nei seguenti casi:
- Si dispone di risorse limitate relativamente a SQL Server
- I file BLOB vengono utilizzati da terze parti (ad esempio un grafico che deve operare su file di immagini)
- Si vuole utilizzare un editor particolare per manipolare i dati (ad esempio Microsoft Excel per i file .xls)
La più grande controindicazione di questo approccio è che il database può facilmente perdere i riferimenti ai file. Se per esempio si memorizzano in una colonna di una tabella gli URL di immagini e poi la cartella che le contiene viene fisicamente spostata dal server su cui risiede si perde il riferimento a tali immagini. Anche il trasferimento dei file da un server ad un altro rappresenta un problema per lo stesso motivo.







