Wie kann man BLOB-Spalten in DB2 einfügen?

ebruss17

Bekanntes Mitglied
Hallo Community,

ich habe eine Tabelle "Blob", die eine Spalte "ATTACHMENTS" beinhaltet, in der BLOBs gespeichert werden können.

CREATE TABLE "BLOB"
( "B_ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 NO CYCLE CACHE 20),
"L_ID" INTEGER NOT NULL,
"ATTACHMENTS" BLOB(1048576) NOT NULL
)

Wie kann ich in diese "ATTACHMENTS"-Spalte denn BLOB-Werte einfügen? Gibt man hier den Dateinamen beim INSERT an oder wie läuft es ab?
 
Unabhängig davon, dass es in der Regel keine gute Idee ist große Dateien in der Datenbank abzulegen:
Wo und wie willst du denn Werte einfügen? Direkt als SQL statement absetzen? Per JPA?
Per JDBC kannst du das z.B. Datenbankunabhängig mittels "setBinaryStream" einfach dein file in den InputStream hauen.
 
ich möchte es direkt als INSERT INTO - Statement einfügen. Geht das so:?

INSERT INTO Blob (l_ID, Attachments) VALUES (1, blob('C:/Bild.bmp'))
 
Nein, SQL Statements werden direkt vom SQL Server ausgeführt. Der SQL Server wird somit nichts unter diesen Pfaden finden.

Verwende ein PreparedStatement und setze einfach die entsprechenden Parameter. Für das BLOB verwendest du dann einfach "setBinaryStream" wie stg schon gepostet hat.
 
Ok hier ein 2.Link PreparedStatement (Java Platform SE 7 ) (Dokumentation zu PreparedStatement).

setBinaryStream() ist eine Methode des PreparedStatement. Daher habe ich auch einen Link gepostet wie PreparedStatement zu verwenden ist. Deine Aufgabe ist das Beispiel zu verstehen und den benötigten Code an deine Bedürfnisse anzupassen.
Das wäre dir klar wenn du nicht nur unsere Beiträge liest sondern auch unsere Vorschläge ausprobierst bzw. wenigstens googelst was wir genau damit meinen.
 
Zuletzt bearbeitet:
d.h. ich muss für jede Datei, die ich in die BLOB-Spalte hinzufügen möchte, ein eigenes setBinaryStream() machen? Kann man das denn nicht mit einem DB2 Command Line ausführen lassen als INSERT INTO??
 
d.h. ich muss für jede Datei, die ich in die BLOB-Spalte hinzufügen möchte, ein eigenes setBinaryStream() machen?

Woher leitest du diese Annahme ab?

Kann man das denn nicht mit einem DB2 Command Line ausführen lassen als INSERT INTO??

Wie schon oben gesagt lies dir das Beispiel auf folgender Seite durch: Using Prepared Statements (The Java™ Tutorials > JDBC(TM) Database Access > JDBC Basics)
Da wird das PreparedStatement im Zusammenhang mit einen UPDATE Statement verwendet, statt einem UPDATE Statement kannst du aber auch jedes andere verwenden -> DELETE, CREATE, SELECT, INSERT, ....

Rate nicht was du tun musst, sondern überlege logisch, probiere aus und dann probiere eine konkrete Frage zustellen.
(Auf Grund fehlender Grundlagen muss man sich bei deinen Beschreibungen/Fragen immer öfters überlegen was genau gemeint/gefragt ist)
 

Zurück
Oben