Wyświetlenie zdjęć z bazy danych winForms C#

Odpowiedz Nowy wątek
2019-07-02 13:49
0

Witajcie chcę wyświetlić wszystkie zdjęcia z bazy danych do flowLayoutPanel lecz podczas próby wyświetlenia wszystkich zdjęć z bazy danych pojawia się błąd: parametr jest nieprawidłowy

        void odczytZdjecia()
        {
            try
            {
                if (polaczenie.State == ConnectionState.Closed)
                    polaczenie.Open();

                using (MySqlCommand komenda = new MySqlCommand("select * from produkty", polaczenie))
                using (MySqlDataReader reader = komenda.ExecuteReader())
                {
                    while(reader.Read())
                    {
                        byte[] pic = reader["obrazek"] as byte[] ?? null;

                        if(pic!=null)
                        {
                            using (MemoryStream mstream = new MemoryStream(pic))
                            {
                                pictures(Image.FromStream(mstream));
                            }
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                polaczenie.Close();
            }

        }

        PictureBox pictures(Image obrazu)
        {
            PictureBox PB = new PictureBox();
            PB.Image = obrazu;
            flowLayoutPanel1.Controls.Add(PB);

            return PB;
        }

Pozostało 580 znaków

2019-07-02 13:51
1

W której linii? Jaki opis błędu? "Parametr jest nieprawidłowy" to wygląda mi na ArgumentException.

edytowany 1x, ostatnio: Sarrus, 2019-07-02 13:52

Pozostało 580 znaków

2019-07-02 13:53
0

tak jest to ArgumentException.

edytowany 2x, ostatnio: jolo “HAnikos” kolo, 2019-07-02 13:56

Pozostało 580 znaków

2019-07-02 13:57
1

Nie MessageBox wywala tylko Ty, tutaj:

MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);

Zmień ex.Message na ex.ToString() i będziesz widział numer linii.

Poza tym możesz ustawić break pointa i odpalić program w trybie debugowania (F5) i zobaczyć samemu kiedy się program wychrzania. Dodatkowo jeżeli ustawisz, żeby zatrzymywał się program przy wyrzucaniu wyjątków, to nie będziesz potrzebować break pointa, bo program sam się zatrzyma tam gdzie wyjątek jest wyrzucany. To tak w skrócie.

edytowany 2x, ostatnio: Sarrus, 2019-07-02 13:58

Pozostało 580 znaków

2019-07-02 14:07
0

System.ArgumentException: Parametr jest nieprawidłowy.
w System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
w System.Drawing.Image.FromStream(Stream stream)
w WindowsFormsApp5.Form1.odczytZdjecia() w C:...\Form1.cs:wiersz 56 czyli pictures(Image.FromStream(mstream));

edytowany 1x, ostatnio: jolo “HAnikos” kolo, 2019-07-02 14:08

Pozostało 580 znaków

2019-07-02 15:01

https://docs.microsoft.com/en[...]mstream?view=netframework-4.8

Exceptions
ArgumentException
The stream does not have a valid image format.

Sprawdź co przychodzi z bazy i odbierasz jako pic.

Pozostało 580 znaków

2019-07-02 15:36
0

Ale jestem głupi....
jedno zdjęcie w bazie miało złe rozszerzenie....
Dziękuję za pomoc

Nie głupi, tylko niedoświadczony ;) - Sarrus 2019-07-02 15:56

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0