Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308042
Per la versione di questo articolo relativa a Microsoft Visual C# .NET, vedere 309158.
In questo articolo si fa riferimento ai seguenti spazi dei nomi della libreria di classi di Microsoft .NET Framework:
  • System.Data.SqlClient
  • System.IO

CONTENUTO DELL'ATTIVITÀ

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.

Torna all'inizio

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
Torna all'inizio

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.
Torna all'inizio
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): Torna all'inizio
Proprietà

ID articolo: 308042 - Ultima revisione: 09/26/2006 12:34:00 - Revisione: 4.1

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
Feedback
t=">ement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> y>