| Autor |
Nachricht |
Wolkenflieger
Unregistrierter
|
Wolkenflieger Unregistrierter
13:12:10 02.09.2010 Titel: |
Blob-Bild aus MySQL-DB laden bzw. speichern |
Zitieren |
Hallo,
in unserer MySQL-DB sind die Bilder zu Produkten als Blob gespeichert.
Nun würde ich gerne mit C# darauf zugreifen, um sie in einer Textbox anzeigen zu lassen - bzw. später auch neue dazu speichern.
Hier mal der Code zum Anzeigen, leider bekomme ich immer eine Fehlermeldung mit Ungültier Parameter:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | MySqlCommand cmd = new MySqlCommand("SELECT Bild FROM tblartikel_bild WHERE ArtikelID = '800-437'", conn);
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(ds, "tblartikel_bild");
System.Data.DataTable dt = ds.Tables["tblartikel_bild"];
for (int i = 0; i < dt.Rows.Count; i++)
{
Byte[] blobData = new Byte[0];
//blobData = (Byte[])ds.Tables["tblartikel_bild"].Rows[i]["blob"];
blobData = (Byte[])dt.Rows[i]["blob"];
MemoryStream msStream = new MemoryStream(blobData);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
Bitmap bt = new Bitmap(msStream);
pictureBox1.Image = bt;
msStream.Close();
}
conn.Close();
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | MySqlCommand cmd = new MySqlCommand("SELECT Bild FROM tblartikel_bild WHERE ArtikelID = '800-437'", conn);
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(ds, "tblartikel_bild");
System.Data.DataTable dt = ds.Tables["tblartikel_bild"];
for (int i = 0; i < dt.Rows.Count; i++)
{
Byte[] blobData = new Byte[0];
//blobData = (Byte[])ds.Tables["tblartikel_bild"].Rows[i]["blob"];
blobData = (Byte[])dt.Rows[i]["blob"];
MemoryStream msStream = new MemoryStream(blobData);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
Bitmap bt = new Bitmap(msStream);
pictureBox1.Image = bt;
msStream.Close();
}
conn.Close();
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | MySqlCommand cmd = new MySqlCommand("SELECT Bild FROM tblartikel_bild WHERE ArtikelID = '800-437'", conn);
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(ds, "tblartikel_bild");
System.Data.DataTable dt = ds.Tables["tblartikel_bild"];
for (int i = 0; i < dt.Rows.Count; i++)
{
Byte[] blobData = new Byte[0];
//blobData = (Byte[])ds.Tables["tblartikel_bild"].Rows[i]["blob"];
blobData = (Byte[])dt.Rows[i]["blob"];
MemoryStream msStream = new MemoryStream(blobData);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
Bitmap bt = new Bitmap(msStream);
pictureBox1.Image = bt;
msStream.Close();
}
conn.Close();
| |
Kann mir bitte jemand helfen bzw. sagen was ich falsch mache?!
Vielen DANK!!! |
|
|
|
 |
Wolkenflieger
Unregistrierter
|
Wolkenflieger Unregistrierter
13:30:44 02.09.2010 Titel: |
|
Zitieren |
Ich meine natürlich in einer Picture-Box anzeigen! |
|
|
|
 |
Unix-Tom
Moderator
Benutzerprofil
Anmeldungsdatum: 18.07.2000
Beiträge: 10376
|
Unix-Tom Moderator
14:21:41 02.09.2010 Titel: |
|
Zitieren |
Und wo kommt der Fehler?
Welche Zeile?
Kommt eine Exeption oder ein Compilerfehler. |
_________________ Moderator für MFC, Linux und Datenbanken
|
|
 |
Wolkenflieger
Unregistrierter
|
Wolkenflieger Unregistrierter
14:48:45 02.09.2010 Titel: |
|
Zitieren |
Ich habe den Code nun etwas geändert, die Fehlermeldung ist aber nach wie vor die selbe:
| Code: | MemoryStream stream = new MemoryStream(myData);
pictureBox1.Image = Image.FromStream(stream);
| |
| Code: | MemoryStream stream = new MemoryStream(myData);
pictureBox1.Image = Image.FromStream(stream);
| |
| Code: | MemoryStream stream = new MemoryStream(myData);
pictureBox1.Image = Image.FromStream(stream);
| |
Sie erscheint, wenn die Zeile mit der pictureBox1 ausgeführt werden soll (Exception). |
|
|
|
 |
Dravere
Moderator
Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 7252
|
Dravere Moderator
15:20:20 02.09.2010 Titel: |
|
Zitieren |
|
 |
loki1985
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.01.2004
Beiträge: 911
|
loki1985 Mitglied
15:35:22 02.09.2010 Titel: |
|
Zitieren |
wow, und immer noch fehlt die fehlermeldung.... |
_________________ syntax-highlighting ist für schwächlinge! echte Klingonen programmieren in notepad, und wenn sie eine IDE sehen jagen und töten sie diese.
|
|
 |
Wolkenflieger
Unregistrierter
|
Wolkenflieger Unregistrierter
20:47:10 02.09.2010 Titel: |
|
Zitieren |
Die Fehlermeldung lautet Ungültiger Parameter
Die Bilder wurden ursprünglich über Access (OLE-Objekt) in die MySQL-DB gespeichert. (blob) |
|
|
|
 |
Dravere
Moderator
Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 7252
|
Dravere Moderator
22:03:09 02.09.2010 Titel: |
|
Zitieren |
| Wolkenflieger schrieb: | | Die Bilder wurden ursprünglich über Access (OLE-Objekt) in die MySQL-DB gespeichert. (blob) |
Das sagt uns überhaupt gar nichts. Blob bedeutet einfach nur eine Datenmenge. Blob kann alles sein, was in Bytes repräsentiert werden kann ... also wirklich alles. Ich frage aber, in welchem Format das Bild denn abgespeichert wurde? Bitmap? Jpeg? Png? Gif? Tiff? Oder einfach eine Reihe von ARGB Werten? Oder sonst was?
Hast du auch schon mal geprüft, ob überhaupt was sinnvolles in diesem Byte-Array drin steht?
Grüssli |
_________________ Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
|
|
 |
Wolkenflieger
Unregistrierter
|
Wolkenflieger Unregistrierter
07:28:53 03.09.2010 Titel: |
|
Zitieren |
Die Bilder wurden als jpeg gespeichert.
Im Byte-Array bekomme ich Sachen wie 301768.
Hoffe das hilft irgendwie weiter?! |
|
|
|
 |
Dravere
Moderator
Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 7252
|
Dravere Moderator
09:56:47 03.09.2010 Titel: |
|
Zitieren |
| Wolkenflieger schrieb: | | Die Bilder wurden als jpeg gespeichert. |
Direkt als Jpeg-Files? Hast du schon mal probiert, statt das Jpeg per Bitmap und PictureBox anzuzeigen, es einfach wieder in ein File zu speichern und dann über dein Lieblings-Bildbetrachtungsprogramm zu öffnen? Einfach um mal zu prüfen, ob der Inhalt des Byte-Array überhaupt korrekt ist
Grüssli |
_________________ Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
|
|
 |