Lettura e scrittura di dati BLOB utilizzando ADO.NET con Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 308042 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308042
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

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

  1. 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.

  2. Avviare Visual Studio .NET, quindi creare un nuovo progetto Applicazione Windows di Visual Basic.
  3. Aggiungere due controlli Button al form predefinito, Form1.
  4. 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).
  5. Aggiungere il codice che segue nella parte superiore della finestra del codice:
          Imports System.Data.SqlClient
          Imports System.IO
    					
  6. 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")
    					
  7. 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")
    					
  8. Premere F5 per compilare ed eseguire l'applicazione.
  9. 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.
  10. 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.

Riferimenti

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 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):
microsoft.public.dotnet.framework.adonet

microsoft.public.dotnet.languages.vb

Proprietà

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
Chiavi: 
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.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com