ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
1068
1068
EMPFEHLEN
-
10.06.09 11:26 #1
- Registriert seit
- Jan 2008
- Beiträge
- 22
So nach dem ich jetzt das halbe Internet durchsucht habe und keine ander Lösung finde müsst Ihr mir mal helfen.
Ich möchte ein Bild Binär in eine MSSQL Datenbank speichern
Habe das bild per MemoryStream in ein Array gefühlt
Code :1 2 3 4 5
Dim streamsource As New IO.MemoryStream 'image in memorystream speichern PictureBox.Image.Save(streamsource, ImageFormat.Jpeg) Dim bytes() As Byte = streamsource.ToArray()
Nun meine Frage wie muss ich den SQL-String zusammenbauen das ich ihn über Command und DataReader abfeuern kann?
Code :1 2
Dim command As New OleDbCommand(SqlString, connection) Dim Reader As OleDbDataReader = command.ExecuteReader()
Vielen Dank und Grüße
BeutelJuhu es kompiliert liefert es aus!
http://www.gameshopsoft.de
-
10.06.09 11:45 #2
- Registriert seit
- Jan 2005
- Ort
- Frankfurt am Main
- Beiträge
- 297
...ExecuteReader? ExecuteNonQuery eher - Du willst doch ein Insert machen, oder? Wenn ja:
Du nimmst einfach deine Insert-Query, z.B. so
Code :1
INSERT INTO files (fileID, fileData) VALUES (@fileID, @fileData)
...und fügst dann deinem DbCommand-Object die entsprechenden Parameter hinzu. Dabei kannst du den DbParameter fileData direkt mit dem ByteArray füttern und das ganze dann gegen die Datenbank feuernGeändert von M4st3r (10.06.09 um 11:48 Uhr)
http://dirkgoldecker.spaces.live.com
. Microsoft Certified Technology Specialist
. Microsoft Certified Professional Developer
|-> Web Applications
-
10.06.09 13:37 #3
- Registriert seit
- Jan 2008
- Beiträge
- 22
Gut das hatte ich auch schon probiert
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Dim insertsql As String = "INSERT INTO BilderFehler" & _ " ([Fehler ID], [BildAsBinary])" & _ " VALUES (@id,@bild)" ' 'Datenbankverbindung Dim myconn As OleDbConnection = Me.getConnection("MSSQL") Try 'OLDB Command Dim insertcmd As New OleDbCommand(insertsql, myconn) ' 'Parameter zum Oldb Command hinzufügen und Wert zuweisen insertcmd.Parameters.Add("@id", OleDbType.Integer).Value = Fehler_ID insertcmd.Parameters.Add("@bild", OleDbType.Binary).Value = Puffer ' ' Datenbankverbindung öffnen myconn.Open() ' 'Daten in die Datenbank schreiben insertcmd.ExecuteNonQuery()
So kommt folgende Fehlermeldung: "Die "@id"-Skalarvariable muss deklariert werden."Juhu es kompiliert liefert es aus!
http://www.gameshopsoft.de
-
10.06.09 17:01 #4
- Registriert seit
- Jan 2008
- Beiträge
- 22
So Fehler behoben Man muss anstatt
Code :1
" VALUES (@id,@bild)"
machen und dann klappt es Aber nächstes ProblemCode :1
" VALUES (?)"
Wobei puffer ein ByteArray ist und es kommt folgende Fehlermeldung:Operandentypkollision: image ist inkompatibel mit textCode :1
insertcmd.Parameters.Add("@P1", OleDbType.Binary).Value = Puffer
Woher weißt der noch das es ein Bild ist es ist doch im Bytearray aufgeschlüsselt?Juhu es kompiliert liefert es aus!
http://www.gameshopsoft.de
-
10.06.09 19:03 #5
- Registriert seit
- Jan 2005
- Ort
- Frankfurt am Main
- Beiträge
- 297
"Der" weiß das nicht, das solltest du wissen. Am besten speicherst du dir den Mime-Type oder die Extension mit von dem was du in die DB schreibst. Das ersparrt dir in der Zukunft einiges an Arbeit...
http://dirkgoldecker.spaces.live.com
. Microsoft Certified Technology Specialist
. Microsoft Certified Professional Developer
|-> Web Applications
-
11.06.09 16:56 #6
- Registriert seit
- Jan 2008
- Beiträge
- 22
Naja rein Theoretisch ist die Datei doch dann dort in Binäry abgespeichert und ich weiß das es ein JPEG ist und damit kann ich es einfach in eine Picturbox laden. Von daher ist mir die Extension doch egal.
Aber hast du mal ein Code Beispiel mit dem MIME-Typ das verstehe ich nicht
Gruß BeutelJuhu es kompiliert liefert es aus!
http://www.gameshopsoft.de
-
11.06.09 17:07 #7
- Registriert seit
- Jan 2005
- Ort
- Frankfurt am Main
- Beiträge
- 297
So lange deine Dateien immer nur Bilder sind und die durch eine PictureBox reinkommen, ists OK. Wenn du aber irgendwann anfängst andere Dateien (doc, xls, etc...) in die gleiche Tabelle zu speichert, hast du schnell die Übersicht verloren.
Du kannst dir den MimeType anhand der Datei-Extension aus der registry holen. Wie das geht hab ich hier mal aufgeschriebenhttp://dirkgoldecker.spaces.live.com
. Microsoft Certified Technology Specialist
. Microsoft Certified Professional Developer
|-> Web Applications
-
12.06.09 10:41 #8
- Registriert seit
- Jan 2008
- Beiträge
- 22
Okay beantwortet aber immer noch nich mein Problem das er beim Speichern des Bytearrays rummäckert.
folgende Fehlermeldung:Operandentypkollision: image ist inkompatibel mit text
wenn man dieabfeuert.Code :1
ExecuteNonQuery
Juhu es kompiliert liefert es aus!
http://www.gameshopsoft.de
-
12.06.09 10:45 #9
- Registriert seit
- Jan 2005
- Ort
- Frankfurt am Main
- Beiträge
- 297
Das schaut so aus als würdest du das Byte-Array in ein Textfeld in der Tabelle schieben wollen.
Ist die Tabelle richtig aufgebaut?
Ich hab keine Ahnung wie das Parametertechnisch mit dem OleDBCommand ausschaut, aber lass doch mal das OleDBType.Binary weghttp://dirkgoldecker.spaces.live.com
. Microsoft Certified Technology Specialist
. Microsoft Certified Professional Developer
|-> Web Applications
-
Hi
Hier eine Anleitung:
http://www.akadia.com/services/dotne...rite_blob.htmlGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
Ähnliche Themen
-
Bild in einer Datenbank speichern
Von Code46 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 11Letzter Beitrag: 12.04.10, 02:29 -
Bild in Datenbank speichern
Von Voltex im Forum PHPAntworten: 2Letzter Beitrag: 26.01.09, 11:00 -
Bild in Datenbank speichern
Von willimc im Forum PHPAntworten: 3Letzter Beitrag: 07.06.08, 06:10 -
Bild in Datenbank speichern
Von Raven280438 im Forum PHPAntworten: 5Letzter Beitrag: 03.04.08, 10:49 -
[C# / Oracle] Bild aus Datenbank auslesen und speichern
Von MAN im Forum .NET ArchivAntworten: 1Letzter Beitrag: 30.11.04, 11:08





Zitieren

Login





