Dateien in Access speichern

sternchen84

Grünschnabel
Hallo ich habe eine Frage.
Und zwar möchte ich Dateien, z.B. WordDokumente in einer Access Datenbank speichern.
Die Datei soll im JFileChooser ausgewählt werden können und dann mit Hilfe von SQL in der Datenbank gespeichert werden. Klappt leider alles nicht so wirklich.
Kann mir jemand helfen?

Gruß

sternchen
 
Ich glaube nicht dass das so einfach geht. Access speichert Binärdateien als OLE...
Reicht nicht einfach die Referenz?
 
Hallo,

leider reicht die Referenz nicht. Das Access Datein als OLE-speichert ist mir bekannt. Direkt lassen sich so ja auch doc oder andere Dokumente dort speichern, nur habe ich noch keinen Weg gefunden dies über Java zu realisieren. Habe es mit nem FileInputStream und setBinaryStream versucht, bekomme jedoch immer Fehlermeldungen.
 
Lies doch deine Datei in ein byte array ein und speichere dieses als blob in der Datenbank.
 
Ich bin gerade auf der Arbeit und habe nicht so viel Zeit.

Ein BLOB steht ja für Binary Large Object. Daher kann man binäre Daten auch einfach darin ablegen. Dafür gibt es die Methoden setBytes(pos, byte []) und byte [] getBytes(pos, length)
und getLength() um die Länge zu bestimmen.

Das einzige was dann noch fehlt ist die Datei in ein byte [] einzulesen und wiederherzustellen. Dazu solltest du aber Beispiele im Internet finden können. (FileReader/Writer, ByteArrayInput/OutputStream)
 
Java:
connection.prepareStatement("INSERT INTO mytbl ('myfield')  VALUES(?);").setBytes(1, byte[]);

und mit einem FileInputStream hollst du dir das byte[].

Das wärs denn eigentlich auch schon.

Gruss

Oh, inzwischen hat schon zeja geantwortet.. naja vielleicht hilft dir mein code trozdem noch ein bisschen ^^
 
vielen dank jeipack.

Also in java bekomme ich nun keine Fehlermeldung mehr.
In Access scheint es aber noch nicht drin zu sein. Aber es ist doch richtig das ich dort das entsprechende Feld als OLE angebe oder?
 
Access kann im gegensatz z.B. zum MySQLBrowser solche Blobs nicht richtig interpretieren und zeigt sie somit auch nicht an. Du müsstest nur sowas wie "Long binary-Daten" in dem Feld stehen haben. Ist bei mir zumindest so. Ob die Daten wirkich da sind zeigt sich nur wenn man sie wieder ausliest.
 
Zurück