Comment faire pour accéder et modifier des données BLOB SQL Server à l'aide de l'objet Stream ADO

Numéro d'article: 258038 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

L'objet Stream introduite dans ActiveX Data Objects (ADO) 2.5 peut être utilisé pour simplifier considérablement le code qui doit être écrites pour accéder et modifier des données de BLOB (Binary Large Object) dans une base de données SQL Server. Les les versions précédentes de ADO [2.0, 2.1 et 2.1 SP2] exigeaient attention l'utilisation de GetChunk et AppendChunk méthodes de l' Objet Field pour lire et écrire des données BLOB en segments de taille fixe à partir d'et vers une colonne BLOB. Une alternative à cette méthode existe à présent avec l'avènement d'ADO 2.5. Cet article contient des exemples de code qui montrent comment utiliser l'objet Stream pour programmer les tâches courantes suivantes :
  • Enregistrer les données stockées dans une colonne image de SQL Server dans un fichier sur le disque dur.
  • Déplacer le contenu d'un fichier .gif à une colonne image dans une table SQL Server.

Plus d'informations

Les exemples de code suivants sont basés sur les données stockées dans la table pub_info de la base de données exemple de SQL Server 7.0 pubs. Vous devez modifier la chaîne de connexion ADO pour pointer vers votre installation SQL Server.

Exemple 1: Enregistrement de données dans une colonne SQL Server Image dans un fichier sur le disque dur

Le code dans cet exemple ouvre un jeu d'enregistrements sur la table pub_info de la base de données pubs et enregistre les données d'image binaire stockées dans la colonne logo du premier enregistrement dans un fichier sur le disque dur, comme suit :
  1. Ouvrez un nouveau projet de Visual Basic Standard EXE.
  2. Dans le menu projet, cliquez sur références pour les sélectionner et définissez une référence à la Bibliothèque Microsoft ActiveX Data Objects 2.5 Object.
  3. Placez un contrôle CommandButton sur Form1.
  4. Effectuer les déclarations suivantes dans la section du formulaire Général Déclarations :
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mstream As ADODB.Stream
    					
  5. Coupez et collez le code suivant dans l'événement Click du bouton de commande que vous avez ajoutés à l'écran :
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
    Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"
    
    Set rs = New ADODB.Recordset
    rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimistic
    
    Set mstream = New ADODB.Stream
    mstream.Type = adTypeBinary
    mstream.Open
    mstream.Write rs.Fields("logo").Value
    mstream.SaveToFile "c:\publogo.gif", adSaveCreateOverWrite
    
    rs.Close
    cn.Close
    					
  6. Enregistrez et exécutez le projet Visual Basic.
  7. Cliquez sur le bouton de commande pour enregistrer les données binaires dans la colonne logo du premier enregistrement pour le fichier c:\publogo.gid. Recherchez ce fichier dans l'Explorateur Windows et ouvrir pour afficher l'image enregistrée.

    Le code dans cet exemple déclare un objet ADODB Stream et affecte à sa propriété typeadTypeBinary pour refléter que cet objet sera utilisé pour manipuler les données binaires. Ensuite, les données binaires stockées dans la colonne logo du premier enregistrement de la table pub_info sont écrit dans l'objet Stream en appelant sa méthode Write. L'objet Stream contient maintenant les données binaires sont enregistré dans le fichier en appelant sa méthode SaveToFile et en passant le chemin d'accès au fichier. La constante adSaveCreateOverWrite transmise comme paramètre deuxième entraîne la méthode SaveToFile remplacer le fichier spécifié s'il existe déjà.

Exemple 2: Transfer image stockée dans un fichier à une colonne image dans une table SQL Server .gif

Le code dans cet exemple enregistre une image stockée dans un fichier .gif pour la colonne logo dans le premier enregistrement de la table pub_info en écrasant son contenu actuel, comme suit :
  1. Ouvrez un nouveau projet de Visual Basic Standard EXE.
  2. Dans le menu projet, cliquez sur références pour les sélectionner et définissez une référence à la Bibliothèque Microsoft ActiveX Data Objects 2.5 Object.
  3. Placez un bouton de commande sur Form1.
  4. Effectuer les déclarations suivantes dans la section du formulaire Général Déclarations :
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mstream As ADODB.Stream
    					
  5. Couper et coller le code suivant dans l'événement Click du bouton de commande que vous avez ajoutés à l'écran :
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
    Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"
    
    Set rs = New ADODB.Recordset
    rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimistic
    
    Set mstream = New ADODB.Stream
    mstream.Type = adTypeBinary
    mstream.Open
    mstream.LoadFromFile "<path to .gif file>"
    rs.Fields("logo").Value = mstream.Read
    rs.Update
    
    rs.Close
    cn.Close
    					
  6. Enregistrez et exécutez le projet Visual Basic.
  7. Cliquez sur le bouton de commande pour exécuter le code pour transmettre le contenu du fichier .gif dans l'objet ADO Stream et enregistrer les données dans le flux à la colonne logo dans le premier enregistrement du jeu d'enregistrements.
  8. Vérifiez que l'image dans la colonne logo a été modifiée à l'aide du code dans l'exemple 1.

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
308042Comment faire pour lecture et écriture de données BLOB à l'aide d'ADO avec Visual Basic .NET

Propriétés

Numéro d'article: 258038 - Dernière mise à jour: jeudi 15 juillet 2004 - Version: 2.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft OLE DB Provider for SQL Server 7.0
Mots-clés : 
kbmt kbhowto KB258038 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 258038
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires