I metodi
GetChunk e
AppendChunk non sono disponibili in ADO.NET per leggere e scrivere campi BLOB
(Binary Large Object). In questo articolo viene descritto come utilizzare
l'oggetto
FileStream e una matrice di byte per leggere e scrivere dati BLOB da
Microsoft SQL Server a un file.
Requisiti
Nell'elenco che segue vengono indicati l'hardware, il software,
l'infrastruttura di rete e i service pack richiesti:
- Microsoft Windows 2000 Professional, Windows 2000 Server,
Windows 2000 Advanced Server o Windows NT 4.0 Server
- Microsoft Visual Studio .NET
- Microsoft SQL Server
Creazione del progetto
- Aggiungere una tabella denominata MyImages al database Northwind di SQL Server. Includere i seguenti campi nella tabella:
- Campo identità chiamato "ID" di tipo Int.
- Campo chiamato "Description" di tipo VarChar con una lunghezza pari a 50.
- Campo chiamato "ImgField" di tipo Image.
- Avviare Visual Studio .NET, quindi creare un nuovo progetto
Applicazione Windows di Visual Basic.
- Aggiungere due controlli Button al form predefinito, Form1.
- Nella finestra Proprietà cambiare la proprietà Text di Button1 in Salva nel database (dal file), quindi
cambiare la proprietà Text di Button2 in Salva nel file (dal
database).
- Aggiungere il codice che segue nella parte superiore della
finestra del codice:
Imports System.Data.SqlClient
Imports System.IO
- Fare doppio clic su Button1, quindi aggiungere il codice seguente al gestore eventi Button1_Click:
Nota È necessario modificare uid<username> e pwd=<strong
password> nei valori corretti prima di eseguire il codice. Assicurarsi che
l'ID utente disponga delle autorizzazioni appropriate per effettuare questa
operazione nel database.
Dim con As New SqlConnection _
("Server=YourServer;uid=<username>;pwd=<strong password>;database=northwind")
Dim da As New SqlDataAdapter _
("Select * From MyImages", con)
Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
Dim ds As New DataSet()
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim fs As New FileStream _
("C:\winnt\Gone Fishing.BMP", FileMode.OpenOrCreate, _
FileAccess.Read)
Dim MyData(fs.Length) As Byte
fs.Read(MyData, 0, fs.Length)
fs.Close()
con.Open()
da.Fill(ds, "MyImages")
Dim myRow As DataRow
myRow = ds.Tables("MyImages").NewRow()
myRow("Description") = "This would be description text"
myRow("imgField") = MyData
ds.Tables("MyImages").Rows.Add(myRow)
da.Update(ds, "MyImages")
fs = Nothing
MyCB = Nothing
ds = Nothing
da = Nothing
con.Close()
con = Nothing
MsgBox ("Image saved to database")
- Fare doppio clic su Button2, quindi aggiungere il codice seguente al gestore eventi Button2_Click:
Nota È necessario modificare uid<username> e pwd=<strong
password> nei valori corretti prima di eseguire il codice. Assicurarsi che
l'ID utente disponga delle autorizzazioni appropriate per effettuare questa
operazione nel database.
Dim con As New SqlConnection _
("Server=YourServer;uid=<username>;pwd=<strong password>;database=northwind")
Dim da As New SqlDataAdapter _
("Select * From MyImages", con)
Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
Dim ds As New DataSet()
con.Open()
da.Fill(ds, "MyImages")
Dim myRow As DataRow
myRow = ds.Tables("MyImages").Rows(0)
Dim MyData() As Byte
MyData = myRow("imgField")
Dim K As Long
K = UBound(MyData)
Dim fs As New FileStream _
("C:\winnt\Gone Fishing2.BMP", FileMode.OpenOrCreate, _
FileAccess.Write)
fs.Write(MyData, 0, K)
fs.Close()
fs = Nothing
MyCB = Nothing
ds = Nothing
da = Nothing
con.Close()
con = Nothing
MsgBox ("Image retrieved")
- Premere F5 per compilare ed eseguire
l'applicazione.
- Fare clic su Salva nel database (dal file)
per caricare l'immagine, C:\WinNT\Gone Fishing.bmp, nel campo Image di SQL Server. Dopo che è stato visualizzato un messaggio di
conferma del salvataggio dell'immagine, controllare la tabella a scopo di
verifica.
- fare clic su Salva nel file (dal database)
per salvare nuovamente in un file i dati del campo Image di SQL Server. Verificare che ora esista C:\WinNT\Gone
Fishing2.bmp.
Per ulteriori
informazioni su un argomento analogo in Visual Basic 6.0, fare clic sul numero
dell'articolo della Microsoft Knowledge Base riportato di seguito:
258038
(http://support.microsoft.com/kb/258038/EN-US/
)
How to: Accedere e modificare dati BLOB SQL Server utilizzando l'oggetto flusso ADO
Per ulteriori informazioni di carattere generale su
ADO.NET o Visual Basic .NET, vedere i seguenti newsgroup MSDN (informazioni in
lingua inglese):
Identificativo articolo: 308042 - Ultima modifica: martedì 26 settembre 2006 - Revisione: 4.1
Le informazioni in questo articolo si applicano a
- Microsoft ADO.NET (incluso in .NET Framework)
- Microsoft ADO.NET 1.1
- Microsoft Visual Basic .NET 2002 Standard Edition
- Microsoft Visual Basic .NET 2003 Standard Edition
| kbhowtomaster kbio kbsqlclient kbsystemdata KB308042 |
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.