File in DB speichern und wieder auslesen

daJunior

Grünschnabel
hallo zusammen

Stehe gerade vor einem schwerwiegendem problem.
Und zwar:
Ich verwende als DB Microsoft SQL Server.

Ich habe mir in der DB eine Tabelle angelegt mit einem Eintrag Content vom Typ Image.

Methode:
FileStream fs = new FileStream(this.source_file, FileMode.OpenOrCreate, FileAccess.Read);

byte[] MyData = new byte[fs.Length];
fs.Read(MyData,0,System.Convert.ToInt32(fs.Length));
fs.Close();

string query;
query = "Insert into Dokumente\n";
query += "(Suffix, Beschreibung, Patient_ID, TAB_Name, TAB_ID, Content) \n";//

query += "Values (\n";
query += "'" + ".ico" + "', \n";
query += "'" + "Test" + "', \n";
query += "'" + this.root.simp_currentClient.ID + "', \n";
query += "'" + "Ord" + "', \n";
query += "'" + "98" + "', \n";
query += "'" + MyData + "' \n";
query += ")";

this.root.dba_database.Update(query);

Wenn ich aber dieses so in die DB speichere, speichert er immer das gleiche ab, unabhängig vom typ oder filelänge!

Wo kann hier der Fehler sein

Wie kann ich das BLOB wieder auslesen
(MyData = (byte[])result.GetValue(result.GetOrdinal("Content"));/) funkt irgendwie nicht


danke Gerald
 
Warum willst du denn das Bild unbedingt in der Datanbank abspeichern statt es irgendwo auf den Server zu legen und nur die Bilrurl abzulegen?
 
Re:

Ich will das File nicht auf einem Server ablegen!
Ich will das ganze File als Image in eine DB speichern, da dies für meine Anwendung am sichersten ist.

MfG pg

PS: Oder glaubst du, dass deine Variante mit dem Pfad speichern, besser ist?
 
Ich weiß nicht, ich habe noch nie ein Bild in der DB abgelegt, aber ich habe davon gehört, dass bei Access die DB riesen groß wird, obwohl die Bilder oder andere Dateien nicht sooo groß sind. Der Speicherbeadrf ist also höher als der der eigentlichen Datei...
Ich weiß aber nicht wie das mit MS SQL ist...
 
Zurück