c # - Henter flere billeder fra database til PictureBox

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil hente flere billeder fra min database, hvor data er feltet for billede. Her er min kode, men det viser kun det første billede. Hjælp venligst.


SqlConnection sq = new SqlConnection(@"Data Source=DESKTOP-GH3KCDHSQLEXPRESS;Initial Catalog=Project1;User ID=sa;Password=Salma0300.");
String st = "select data FROM Picture";
sq.Open();
PictureBox[] pb = { pictureBox1,pictureBox2,pictureBox3,pictureBox4,pictureBox5,pictureBox6,pictureBox7,pictureBox8};

    MemoryStream stream = new MemoryStream();
    SqlCommand sqlcom = new SqlCommand(st, sq);
    byte[] image = (byte[])sqlcom.ExecuteScalar();
    stream.Write(image,0,image.Length);
    Bitmap bitmap = new Bitmap(stream);
    pb[1].Image = bitmap;
    pb[2].Image = bitmap;

Bedste reference


Du har en række problemer.


Griber kun 1 billede, selvom du har valgt hele tabellen.



byte[] image = (byte[])sqlcom.ExecuteScalar();


Du skal iterere gennem rækkerne. Brug ExecuteReader() i stedet for ExecuteScalar for at få en SqlDataReader objekt. Fortsæt derefter med at kalde Read() fra læseren, indtil du ikke har flere poster eller ikke flere billedkasser til at udfylde.


https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx[10]


Du arbejder kun med en enkelt bitmappe



Bitmap bitmap = new Bitmap(stream);
pb[1].Image = bitmap;
pb[2].Image = bitmap;


Se problemet? Du har indlæst en enkelt bitmap og indstiller dine kasser til det samme billede. Iterating gennem alle de ovennævnte optegnelser burde i sig selv give dig mulighed for at se problemet og rette op på dette.