2010-02-01 3 views
2

Je stocke des images dans la base de données. Comment récupérer toutes les images de la base de données.Récupérer des images de la base de données du serveur SQL

Par exemple: sélectionner des images de ImageTable

Problème:

Logique de données:

  while (dr.Read()) 
      { 
      ///Check for null 
       if (!dr.IsDBNull(0)) 
      { 
       try 
       { 
        ///Converting the image into bitmap 
        byte[] photo = (byte[])dr[0]; 
        ms = new MemoryStream(photo); 
        Bitmap bm = new Bitmap(ms); 
        bmp[i] = bm; 

        ms.Close(); 

       } 
       catch (Exception ex) 
       { 

       } 
      } 

Page aspx.cs:

Bitmap[] bm= photos.GetImage(); 
    for (int i = 0; i < bm.Length; i++) 
    { 
    MemoryStream ms = new MemoryStream(); 

     **bm[i].Save(ms, ImageFormat.Jpeg);**(Error : A generic error occurred in GDI+.) 

htmlCode.Append("<li><img ImageUrl=\\\""); 
htmlCode.Append(**ms.GetBuffer()**); 
htmlCode.Append("\" alt=\"\" width=\"100\" height=\"100\"></li>"); 
} 

Image non s'affiche

Geetha

+3

Ne stockez pas d'images dans la base de données. Et n'oublie pas de poser ta question. – Aaronaught

+0

Avez-vous des problèmes pour récupérer les données ou des problèmes d'affichage des données binaires en tant qu'image? – Kane

+0

@Aaronnaught - sauf si vous utilisez FILESTREAM. Ce qui a des avantages énormes pour la gestion et la cohérence. – womp

Répondre

7

ceci est un exemple de Sql Server

 connection.Open(); 
     SqlCommand command1 = new SqlCommand("select imgfile from myimages where [email protected]", connection); 
     SqlParameter myparam = command1.Parameters.Add("@param", SqlDbType.NVarChar, 30); 
     myparam.Value = txtimgname.Text; 
     byte[] img = (byte[])command1.ExecuteScalar(); 
     MemoryStream str = new MemoryStream(); 
     str.Write(img, 0, img.Length); 
     Bitmap bit = new Bitmap(str); 
     connection.Close(); 

regarder ici http://www.akadia.com/services/dotnet_read_write_blob.html

+0

Je veux obtenir toutes les images – Geeth

+1

utiliser datareader pour parcourir toutes les images – tga

1

Vous devez obtenir les données binaires de la DB, et ensuite les données flux binaires au navigateur comme image.

+1

Pouvez-vous s'il vous plaît expliquer avec un exemple. – Geeth

0

Vous définissez l'URL de l'image pour le flux d'octets - vous devez enregistrer l'image sur le disque dur et fournir l'emplacement. Un meilleur moyen serait de définir l'URL de l'image comme un gestionnaire de ressources avec des paramètres qui pourraient ensuite récupérer l'image de la base de données et la renvoyer en tant que flux au navigateur.

Questions connexes