Hallo,
ich habe eine Image in einer DB-Tabelle liegen.
Dieses frage ich ab und übergebe dieses einer ImageBox.
Meine derzeitige Lösung funktioniert auch, aber ich bin mir nicht sicher, ob es die eleganteste ist. Leider hat Googlen nicht weiter geholfen.
Als in meiner Tabelle (SQL Server 2005) habe ich eine Spalte, die als varbinary(max) angelegt ist.
Für die SQL-Abfrage lege ich in C# folgenden SQL-Parameter an:
C#-Quelltext
1: 2: 3:
| SqlParameter image = new SqlParameter("@Image", SqlDbType.VarBinary, int.MaxValue); image.Direction = ParameterDirection.Output; command.Parameters.Add(image); |
Das Ergebnis der Abfrage weise ich wie folgt einer globalen Klassenvariablen zu:
C#-Quelltext
1: 2: 3: 4:
| private Byte[] _extensionImage; ... reader.Read(); this._fileName = reader["Name"].ToString(); |
Die Zuweisung an die ImageBox erfolgt wie folgt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| try { string strfn = Convert.ToString(DateTime.Now.ToFileTime()); FileStream fs = new FileStream(strfn, FileMode.CreateNew, FileAccess.Write); fs.Write(this._extensionImage, 0, this._extensionImage.Length); fs.Flush(); fs.Close(); this.pictureBox1.Image = Image.FromFile(strfn); } catch (Exception e) {} |
Leider habe ich im Internet immer nur Lösungen gefunden, die sich auf den Spaltentyp "image" Sql Server 2000 beziehen.
Was sagt ihr zu der Lösung?
Geht das schöner zu lösen, als immer eine Datei aus den Bytes zu erstellen???
Danke
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt