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

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

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

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

Rejestracja: 9 lat temu

Ostatnio: 4 godziny temu

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

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

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

Rejestracja: 9 lat temu

Ostatnio: 4 godziny temu

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

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

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

Rejestracja: 9 lat temu

Ostatnio: 4 godziny temu

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

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

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

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