Seite 1 von 2

Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 13.01.2010 20:38
von Lupo
Hallo!

Mit ein paar Kumpels richten wir eine Fotodatenbank auf einem SQL Server 2005 den wir mitbenutzen können, ein. Jeder von uns soll Bilder raufladen können und jeder soll alle ansehen können. Der Server und die Spalten ist von einem Administrator eingerichtet, da sollen wir nicht ran. Es gibt normale numerische und stringFelder und das eine Feld vom Typ image.

Das mit der verbindung zum Server ist ok und das mit dem runterholen der Bilder mit GetDatabaseBlob klappt auch, die bereits von wem anderen drauf sind.

Aber selbst draufspielen klappt nicht :cry:

Weil der Code:

Code: Alles auswählen

; PB 4.40
UseODBCDatabase()
fotonummer.l
; makeConnection
If OpenDatabase(0, "SUPERPICS", "", "")
   fotonummer = 1234
   IF ReadFile(0, "c:\mypictures\picture1.jpg")
         Bild_Laenge = Lof(0)
         *buffer = AllocateMemory(Bild_Laenge) 
          If *buffer 
              If ReadData(0, *buffer, Bild_Laenge) 
              befehlstring$ = "INSERT INTO dbo.gamepics ( Foto_Nummer, Foto_Image ) VALUES ( " + fotonummer + ", ? )"   
                 If SetDatabaseBlob(0, 0, *buffer, Bild_Laenge)
                     If DatabaseUpdate(0, befehlstring$)
                        Debug "OK"     
                     Else
                       Debug "ERROR"
                       Debug DatabaseError()
                     EndIf
                 Endif
              Endif
              FreeMemory(*buffer)
          Endif
      CloseFile(0)
   Endif
Endif
bringt immer den Fehler im Debugfenster
[Microsoft][ODBC SQL Server Driver]Das COUNT-Feld ist nicht korrekt, oder es besteht ein Syntaxfehler

Das Problem ist das Fragezeichen in dem Befehlsstring. Wenn ich stattdeesen null reinschreibe, läuft es durch, aber ich hab kein Bild drinnen ^^
Alle anderen numerischen und string-Spalten kann ich korrekt beschreiben.

Aber wie bekomme ich das Bild rein? Braucht der SQL-Server da was anderes als das Fragezeichen? /:-> Oder ist mein Code falsch?

Gibts alternativv eine DLL die das Imageschreiben in den SQL-Server 2005 erledigen kann? Hab nichts gefunden.

DANKE Lupo

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 13.01.2010 20:47
von Josh
sollen die bilder selbst in der datenbank gespeichert werden? hab ich das richtig mitbekommen?

sorry, aber ich bin mir nicht sicher, ob das das richtige system ist. ich kenne das nur von zeichnungen. die werden unter einer eindeutigen zufallszahl in einem verzeichnis abgespeichert und die datenbank übernimmt nur die verwaltung der zeichnungen.

in dem fall, den ich jetzt anspreche, werden die dateieigenschaften der zeichnung mit so vielen informationen wie möglich gefüttert und die datenbank liest diese dann aus. damit bist du auch nicht auf immer und ewig auf ein system gebunden, weil die informationen selbst noch in den dateieigenschaften stehen.

sorry, war jetzt vieleicht nicht die antwort auf deine frage, aber vieleicht ein kleiner denkanstoß.

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 02:01
von Lupo

Code: Alles auswählen

sollen die bilder selbst in der datenbank gespeichert werden? hab ich das richtig mitbekommen?
Ja, als Image und nicht irgendwie mit Base64 codiert.
Das muss als Image sein, weil das alle von uns so machen und weil da schon einige 1000 Bilder draufsind. Die DB kann ja Images speichern.

Ich brauch einfach ne Möglichkeit, die Images in den SQL-Server 2005 als Image zu schubsen, notfalls mit einer DLL

Danke Lupo

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 11:02
von Kiffi
@Lupo: Dein Code scheint mir korrekt zu sein. Ich vermute, dass
es an dem ODBC-Treiber liegen könnte.

Wie haben denn Deine Kollegen die Bilder in die DB gespeichert
(Programmiersprache, Datenbankprovider)?

Wenn ich heute Abend Zeit finde, dann versuche ich mal, einen
entsprechenden Code mit COMate & ADO zusammenzuklöppeln.

Grüße ... Kiffi

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 11:33
von bobobo
scheiss einen auf Comate und ADO :mrgreen: erstens blickt das kein schwein und zweitens
geht's damit

Code: Alles auswählen

befehlstring$ = "INSERT INTO dbo.gamepics ( Foto_Nummer, Foto_Image ) VALUES ( " + Str(fotonummer) + ", '?' )"


2 Fehler korrigiert : einmal die fehlenden Hochkommata und zweitens die fotonummer nicht ge"string"t

frag mich nun aber nicht warum der SqlServer die hochkommata braucht

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 11:53
von Kiffi
Sauber! 8)

Danke & Grüße ... Kiffi

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 12:26
von bobobo
na .. da hätte ich jetzt aber mehr erwartet :D aber ok

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 12:46
von Kiffi
bobobo hat geschrieben:na .. da hätte ich jetzt aber mehr erwartet :D
was denn? Das hier?
bobobo hat geschrieben:aber ok
na denn... :-)

Grüße ... Kiffi

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 14.01.2010 13:57
von bobobo
nö .. eher genöhle wegen meinem genöhle 8) aber gut nun .. ich verschwende schon wieder strom

Re: Wie bring ich Fotoimages in eine SQL Server 2005 Datenbank ?

Verfasst: 15.01.2010 03:53
von Lupo
Danke!

Aber :cry: :cry:

Mit bobobo s befehl

Code: Alles auswählen

..... VALUES ( " + Str(fotonummer) + ", '?' )"
geht es zwar aber es geht doch nicht :|

Also es läuft durch ohne Error und wenn der Kumpel in das Server Studio reinsieht dann steht da auch ein Image eingetragen in der Spalte, aber wenn er das image binär anschaut dann steht da nur drinnen : $3F. Und das ist das dämliche Fragezeichen .. :o

Kann man dann natürlich auch nicht wieder öffnen, das Image ähm Fragezeichen.

Ich habs probiert, man kann da beliebigen Stringtext in das Imagefeld schreiben und er meckert nicht. Ich hab noch 2 Stunden rumprobiert mit anderen Sonderzeichen als dem ?, aber da tut sich nix. Irgndwie scheint es beim SQL-Server keinen Platzhalter für das Blob zu geben?
Kiffi hat geschrieben:Wie haben denn Deine Kollegen die Bilder in die DB gespeichert
Die ich kenne machen das mit .net. (ado), aber nur geklickt ohne viel Ahnung. Da kann mir keiner helfen. Der Server steht bei der Firma von dem Onkel von einem Kumpel und da haben wir ne 150GB Ecke abbekommen fürs hobby. 8)
Kiffi hat geschrieben:Wenn ich heute Abend Zeit finde, dann versuche ich mal, einen
entsprechenden Code mit COMate & ADO zusammenzuklöppeln.
Das wäre super wenns irgendeine Lösung gibt wenn du mal Zeit hast. Die anderen grinsen schon wenn sie michn sehen weil ich nicht weiterkomme. :oops:

DAnke Lupo