Blob Element kopieren

Status
Nicht offen für weitere Antworten.

eolith421

Mitglied
Hallo!
Ich hätte da eine Frage zum kopiere von Blobs. Ich muss in meinem Programm Daten aus einer Tabelle aus einer Datenbank auslesen darunter auch blob Elemente und diese dann in eine Tabelle in einer anderen Datenbank schreiben, also eigentlich ein Kopiervorgang. Nachdem Blob eigentlich auch nichts anderes als Text ist habe ich mir gedacht, dass eigentlich folgender Code funktionieren würde:

Java:
int dmisPatientenId = -1;
		String ehrQuery = null;
		String dmisQuery = null;
		ResultSet ehrResult = null;
		
		try {
			ehrQuery = "select * from stammdaten WHERE Sozialversicherungsnummer="+ehrSozialversicherungsnummer;
			ehrResult = ehrDb.executeSelect(ehrQuery);
			ehrResult.first();
			
			Blob imageBlob = ehrResult.getBlob(13);
			
			dmisQuery = "insert into stammdaten (Sozialversicherungsnummer, Nachname, Vorname, Geschlecht, Geburtsdatum, Strasse, Hausnummer, Ort, PLZ, Land, Telefon, Patientenfoto) " +
			"VALUES ('"+ehrResult.getLong(2)+"', '"+ehrResult.getString(3)+"', '"+ehrResult.getString(4)+"','"+ehrResult.getString(5)+"','"+ehrResult.getDate(6)+"','"+ehrResult.getString(7)+"','"+ehrResult.getInt(8)+"','"+ehrResult.getString(9)+"','"+ehrResult.getInt(10)+"','"+ehrResult.getString(11)+"','"+ehrResult.getString(12)+"','"+imageBlob+"')";
			dmisPatientenId = dmisDb.executeUpdate(dmisQuery);
			
			return dmisPatientenId;
		}
		catch(Exception e){
			return dmisPatientenId;
		}
Tut er aber nicht, es wird nur die Referenz zum Blob in die DB geschrieben aber nicht das Element. Wo liegt hier mein Gedankenfehler?
 
S

SlaterB

Gast
> Wo liegt hier mein Gedankenfehler?

keine Beispiele angeschaut

Google
->
Inserting BLOB data through JDBC

-----

gut, dass imageBlob.toString() nur die Referenz zurückliefert und sowieso ein SQL-String
> insert into ... values(3,'test','[100.000 Bytes Blob]')
höchstwahrscheinlich keinen Sinn machen würde, hätte man auch durch Denken herausfinden können,
aber naja
 

eolith421

Mitglied
Wenn ich einen SQL Dump von einer Tabelle mit Blobs mache kann ich mir die Dateien auch anschauen, wenn Sie auch nicht leserlich. Ich habe mir die Beispiele sehr wohl angeschaut, nur erschien es mir sehr umständlich zuerst einen File/Image zu erstellen ehe ich es dann erneut in die andere DB schreiben muss.

Florian
 

eolith421

Mitglied
Auch auf die Gefahr wieder eine etwas unfreundliche Antwort zu bekommen :( nochmals eine Frage dazu. Ist das also die richtige und einzige Vorgangsweise um ein Blob von Tabelle A nach Tabelle B zu kopieren:

1. Blob aus Tabelle A auslesen
2. Bild bzw. Datei erzeugen
3. Datei mithilfe eines InputStream einlesen
4. Mithilfe von PreparedStatement das Blob einfügen

Meine Probleme sind folgende:
- Ich habe eine eigene DB Methode bei der ich einfach die sql Query als String übergebe und diese Methode die DB einträgt. Geht das vielleich auch als String?
- Ich erzeuge keine "temporären" Dateien sondern stelle die Bilder mithilfe eines Servlets dar, kann das Probleme machen?

Mir erscheint diese Vorgangsweise als extrem umständlich.;)

Gruß,
Florian
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Daten gibts auch immer Stream-basiert, selbst wenn es 100 MB sind, braucht das Programm nicht mehr als paar KB speicher, wenn das Blob stückweise eingelesen und gleich wieder weitergereicht wird

obs ohne PreparedStatement geht, kann ich nicht sagen
 

DerEisteeTrinker

Bekanntes Mitglied
ähm ich will ja nicht altklug klingen, aber warum will man sich daten aus der db holen, die dann eh gleich wieder darin verschwinden. ich glaub jede "moderne" db kann auch ein "insert into" verbunden mit einem "select" und da wird das bestimmt nicht als referenz umhergeschoben. und die datenbank kann man ja auch mit angeben
 
Zuletzt bearbeitet:
G

Gast

Gast
ähm ich will ja nicht altklug klingen, aber warum will man sich daten aus der db holen, die dann eh gleich wieder darin verschwinden. ich glaub jede "moderne" db kann auch ein "insert into" verbunden mit einem "select" und da wird das bestimmt nicht als referenz umhergeschoben. und die datenbank kann man ja auch mit angeben

So eine unmoderne Datenbank wie Oracle beispielsweise nicht. Bei Blobs bleibt meist tatsächlich nur der umständliche und langsame doppelte Weg.
 
S

SlaterB

Gast
wenn es dieselbe DB ist, braucht man ein Blob doch eh kaum verschieben/ zwei mal,
dann würde ich eine Klasse (edit: Tabelle) um das Blob herum aufbauen und eher die anderen Elemente umbenennen/ Ids ändern, falls irgendwas zu 'verschieben' ist ;)
 
Zuletzt bearbeitet von einem Moderator:
G

Gast

Gast
Also man muss den Blob natürlich nicht interpretieren, aber man muss ihn schon fetchen und wieder einfügen. Je nach interface reichts evtl. einfach nen stream durchzureichen.
 

eolith421

Mitglied
Hallo!
Danke für die rege Deiskussion. Um das mit den DBs zu klären folgendes: Die Anwendung ist ein Prototyp, d.h. wenn die Anwendung einmal funktioniert wird sie die Daten ohnehin nicht aus einer MySQl DB sich holen sondern aus einem anderen mir nicht bekannten Repository. Das heißt die Klasse die die Kopiervorgänge vom Repository in meine MySQL DB von der Anwendung kopiert müssen ohnehin angepasst werden. Ich will nur schauen, dass sie möglichst wenig anpassen müssen, daher keine insert & select Kombinationen.

Um zurück zum Thema zu kommen, noch eine Frage:

Ich habe inzwischen das Blob in einen inputStream geladen, jetzt wollte ich nur nochmals fragen, eben wegen der Portabilität, ob ich den input Stream wirklich nur mit prepareStament in die DB schreiben kann oder auch eben mithilfe eines Strings welcher an die DB Klasse weitergegeben werden kann? Im Internet beziehen sich die Beispiele vorwiegend auf Oracle und ebene prepare Statement.

Vielen Dank!
Florian
 

eolith421

Mitglied
Hallo!
Ich habe jetzt einmal versucht, das ganze mithilfe von preparedStatement zu realisieren. Nur leider bekomme ich eine Exception:

Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
at at.ac.uibk.dbis.server.application.session.CopySessionData.copyStammdatenFromEhr(CopySessionData.java:69)

Ich denke ich habe aber am Anfang noch was falsch. Mein Code schaut im Moment so aus:

Java:
InputStream in = null;
			Blob data = ehrResult.getBlob("Patientenfoto");
			in = data.getBinaryStream();
			
			
			/*BufferedImage image = null;
			Blob imageBlob = ehrResult.getBlob(13);
			InputStream is = imageBlob.getBinaryStream();
			image = ImageIO.read(is);
			*/
			
			dmisQuery = "insert into stammdaten (Sozialversicherungsnummer, Nachname, Vorname, Geschlecht, Geburtsdatum, Strasse, Hausnummer, Ort, PLZ, Land, Telefon, Patientenfoto) " +
			"VALUES ('"+ehrResult.getLong(2)+"', '"+ehrResult.getString(3)+"',
'"+ehrResult.getString(4)+"','"+ehrResult.getString(5)+"','"+ehrResult.getDate(6)+"','"
+ehrResult.getString(7)+"','"+ehrResult.getInt(8)+"','"+ehrResult.getString(9)+"','"+ehrResult.getInt(10)+"','"+ehrResult.getString(11)+"','"+ehrResult.getString(12)+"','?')";
			
			Connection conn = dmisDb.connect();
			PreparedStatement stmt = conn.prepareStatement(dmisQuery);
			stmt.setBinaryStream(13, in, data.length());
			stmt.execute();
		    conn.commit();
			
			//dmisPatientenId = dmisDb.executeUpdate(dmisQuery);
			
			return dmisPatientenId;

Erzeuge ich den InputStream richtig bzw. kann man diesen hier verwenden? Wie gesagt ich habe hier leider noch meine Probleme, im Internet gibt es zwar viele Seiten auf denen erklärt ist wie man eine Datei als Blob speichert, aber nicht wie man von Blob zu Blob kopiert.

Danke,
Florian
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S BLOB Image in JSP anzeigen Allgemeine Java-Themen 5
M Anzeigen Blob gespeicherte Datei Allgemeine Java-Themen 6
N BLOB Farbwert auslesen Allgemeine Java-Themen 2
ARadauer Blob aus byte Array erstellen? Allgemeine Java-Themen 3
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
B flying-saucer-pdf Element vertikal strecken Allgemeine Java-Themen 0
P Selenium . Probleme ein Iron Icon Element anzusprechen Allgemeine Java-Themen 2
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
B DomParser - Element filtern Allgemeine Java-Themen 4
S Iterable<?> anzahl der Element Allgemeine Java-Themen 14
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
Messoras List zeigt nur das letzte Element an Allgemeine Java-Themen 14
O aus Liste ein beliebiges Element auswählen Allgemeine Java-Themen 7
G mittleres Element aus TreeMap Allgemeine Java-Themen 5
J XML Element Zugriff Allgemeine Java-Themen 4
S translate verschiebt verkehrtes Element Allgemeine Java-Themen 2
M Webservices: WSDL Files ohne "Service" Element? Allgemeine Java-Themen 4
P Element toString Allgemeine Java-Themen 9
J Element aus HashSet löschen Allgemeine Java-Themen 2
S Element aus ArrayListe löschen --> Thread hängt sich auf Allgemeine Java-Themen 2
G Element aus Liste entfernen Allgemeine Java-Themen 6
B von Array-Element auf Position in Array Allgemeine Java-Themen 7
M Javadoc | Javadoc Eintrag des verlinkten Element einbetten? Allgemeine Java-Themen 4
A Element für Preferences Page Allgemeine Java-Themen 3
T Element aus Vector entfernen Allgemeine Java-Themen 4
J Tree indexieren, Element-Indexierung Allgemeine Java-Themen 2
A Queue, beim dem das letzte Element herausfällt Allgemeine Java-Themen 4
I ArrayList mit einem aktiven Element Allgemeine Java-Themen 7
M Wie heißt denn dieses grafische Element ? Allgemeine Java-Themen 2
K Kein schließendes Tag bei leerem Element mit JDOM Allgemeine Java-Themen 8
E JTree - einzelnes Element (Knoten) editieren Allgemeine Java-Themen 2
B JList Element Auswahl Allgemeine Java-Themen 2
N Array Element vom Typ eines Objekts zeigt auf ein anderes A. Allgemeine Java-Themen 4
Ark Kubische Suche um ein Element in array[][][] Allgemeine Java-Themen 18
D Fehler beim löschen eines Arraylist-element Allgemeine Java-Themen 5
M Erstes Element einer Enumeration ermitteln Allgemeine Java-Themen 6
N Element aus LinkedList löschen Allgemeine Java-Themen 2
C Collection Element ersetzen Allgemeine Java-Themen 5
M Ordner kopieren Allgemeine Java-Themen 5
S Referenzdatentyp kopieren Allgemeine Java-Themen 5
I Wie Vektor-Grafik in die Zwischenablage kopieren? Allgemeine Java-Themen 2
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
M Dateien schneller kopieren Allgemeine Java-Themen 1
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
B In zwischenablage kopieren Allgemeine Java-Themen 2
F Datentypen Kopieren von Datentypen Allgemeine Java-Themen 10
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
N String ins Clipboard kopieren ohne makieren. Allgemeine Java-Themen 12
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
J PDF-Datei aus JAR-Archiv in Dateisystem kopieren Allgemeine Java-Themen 1
S Einen übergebenen String kopieren Allgemeine Java-Themen 3
S in Zip kopieren -- Backup-Programm Allgemeine Java-Themen 9
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
P jar aus der jar kopieren XD Allgemeine Java-Themen 4
M Pakete in Ordner Kopieren Allgemeine Java-Themen 7
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
kodela Problem mit Kopieren über FileChannel Allgemeine Java-Themen 4
H Kopieren sehr langsam Allgemeine Java-Themen 5
I Java Ordner kopieren [Error] Allgemeine Java-Themen 6
E Files Kopieren Allgemeine Java-Themen 8
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
S exe Kopieren Allgemeine Java-Themen 11
E Ordner rekursiv kopieren Allgemeine Java-Themen 8
J Standard-I´/O kopieren Allgemeine Java-Themen 5
R kopieren von Dateien und Verzeichnissen - UNICODE? Allgemeine Java-Themen 4
S Kopieren von Datei führt zu Beschädigung Allgemeine Java-Themen 7
D markierten Text kopieren Allgemeine Java-Themen 2
O ist tiefes Kopieren sinnvoll? Allgemeine Java-Themen 14
B Zertifikat des Users speichern (serialisieren oder kopieren) Allgemeine Java-Themen 2
S Dateiinhalt kopieren Allgemeine Java-Themen 4
G Object mit clone kopieren Allgemeine Java-Themen 21
F Kopieren eines Objekts Allgemeine Java-Themen 3
D Kopieren und Einfügen Allgemeine Java-Themen 8
C Kopieren von Dateien die von einem anderen Programm verwendet werden? Allgemeine Java-Themen 7
0din Websites kopieren Allgemeine Java-Themen 25
D mit java kopieren und umbenennen Allgemeine Java-Themen 6
X Objektsammlung clonen bzw. kopieren Allgemeine Java-Themen 5
A Beim Kopieren werden Bilder verfälscht Allgemeine Java-Themen 3
V Dateien kopieren Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben