2017-07-16 1 views
0

J'essaie ci-dessous le code dans l'application C# windows qui fonctionne bien pour récupérer une seule image à partir d'une table de base de données SQL Server.Comment faire pour récupérer plusieurs images à partir de la base de données SQL Server dans picturebox dans l'application C# windows?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO; 
using System.Data.SqlClient; 

namespace ManagementSystem 
{ 
    public partial class frmSearchResult : Form 
    { 
     public frmSearchResult() 
     { 
      InitializeComponent(); 
     } 

     SqlConnection con; 
     SqlCommand cmd; 

     private void cmdSearch_Click(object sender, EventArgs e) 
     { 
      con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=managementsystem;Integrated Security=True"); 
      con.Open(); 

      cmd = new SqlCommand("Select M_Photo, S_Photo From Members where M_Number=15", con); 

      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 

      da.Fill(ds); 

      if (ds.Tables[0].Rows.Count > 0) 
      { 
       MemoryStream ms = new MemoryStream((byte[])ds.Tables[0].Rows[0]["M_Photo"]); 
       pic_M.Image = new Bitmap(ms); 
      } 
     } 
    } 
} 

mais j'ai besoin de récupérer plusieurs images de la base de données. Quand je joins ci-dessous le code à la fin, je reçois une erreur:

Parameter is not valid.

Code est Annexé

MemoryStream ms1 = new MemoryStream((byte[])ds.Tables[0].Rows[0]["S_Photo"]); 
pic_S.Image = new Bitmap(ms1); 

Quel est le problème avec ça? S'il vous plaît aider.

Merci!

+2

noooo ... ne jamais enregistrer des images en SQL! – Proxytype

+0

S'il vous plaît dites-moi, quelle est la meilleure façon de sauvegarder et de récupérer des images @Proxytype –

+0

Utilisez une sorte de blob ou de stockage de fichiers pour les images et gardez une référence aux images dans la base de données. Garder des images dans un tableau fait gonfler la base de données. –

Répondre

0

Le problème principal était avec la sauvegarde des images de la bonne façon. Utilisez le code ci-dessous pour chaque image pour enregistrer des images dans les champs d'image de la base de données et utilisez le code ci-dessus interrogé pour récupérer des images.

//Convert image to binary 
string imgpathC2 = txtH_C2.Text; 
FileStream fsC2; 
fsC2 = new FileStream(@imgpathC2, FileMode.Open, FileAccess.Read); 
byte[] picbyteC2 = new byte[fsC2.Length]; 
fsC2.Read(picbyteC2, 0, System.Convert.ToInt32(fsC2.Length)); 
fsC2.Close(); 

//Add binary value to SQL parameter 
SqlParameter picparaC2 = new SqlParameter(); 
picparaC2.SqlDbType = SqlDbType.Image; 
picparaC2.ParameterName = "picC2"; 
picparaC2.Value = picbyteC2; 

//use parameter in command 
cmd.Parameters.Add(picparaC2); 

Merci!