Bild in Oracle Datenbank - Grundkurs

  • Themenstarter java_starter_dl
  • Beginndatum
Status
Nicht offen für weitere Antworten.
J

java_starter_dl

Gast
Hi!
Hab da mal eine kurze Frage:
Ich habe in einer Oracle-Tabelle ein feld mit dem Datentyp blob. Der Benutzer wählt nun ein Bild mittels eines FileChoosers aus. Dieses Bild soll in die Datenbank gespeichert werde. Ich will nicht nur den Pfad, sondern wirklich das bild in die Datenbank. Außerdem möchte ich keine preparedStatements verwenden wenn das möglich ist.

Das habe ich bis jetzt:
Code:
File input = jfc.getSelectedFile();
FileInputStream   fis   = new FileInputStream( input );

jfc ist das Objekt des FileChoosers. Jetzt muss ich doch den FileInputStream irgendwie in einen bytearray bekommen, oder? und dann irgendwie ein Update machen.
WIE?

Vielen Dank!
 

Niki

Top Contributor
Warum willst du keine PreparedStatements verwenden? Ich kenne keine andere Lösung als mit PreparedStatement.
 
J

java_starter_dl

Gast
Naja, weil ich das strickt getrennt habe, ich habe die GUI Klasse wo ich das file einlese und dann habe ich die klasse QueryMaster in der ich alle meine Querys absetze. Ich möchte das nicht wirklich vermischen...
 

ARadauer

Top Contributor
ich würd das anders strukturieren, du hast eine klasse die dir eine verbindung liefert und du hast klassen für jedes objekt das du in die db speichern und laden möchtest. diese DAOs hohlen sich dann über den verbindungsmanager (pool) eine connection uns setzen die verschiedenen querys ab.
an ein eine zentrale klasse abfragen zu schicken und die gibt dan irgendwas zurück, das halte ich für keine gute idee.


also sagen wir du hast ein preparade statement und ein File, dann sieht das so ungefähr aus

Code:
File f = new File("xx.txt");
		FileInputStream is = new FileInputStream(f);
		st.setBinaryStream(1, is);
 
J

java_starter_dl

Gast
Habs eh so ähnlich wie du beschrieben hast mit der Connection-Klasse und so...

Habe jetzt folgenden Code:

Code:
File input = jfc.getSelectedFile();
                
FileInputStream   fis   = new FileInputStream( input );
                
PreparedStatement pstmt = conn.prepareStatement("UPDATE USB_PERSONS SET UNTERSCHRIFT = ? WHERE ID = ?");

pstmt.setBinaryStream( 1, fis, (int)input.length() );
pstmt.setString(2, persnr);

pstmt.executeUpdate();
pstmt.close();
fis.close();

Also zuerst hole ich mir das File, dann pack ich alles in das preparedStatement, und anschlißend das executeUpdate, leider passiert dabei in der Datenbank schlichtweg nix!
Jemand eine Idee?
 
G

Guest

Gast
Du hast recht, hab ich wirklich nicht gemacht, leider funktionierts aber jetzt auch noch nicht...

Nochmal mein aktueller Code...
Code:
File input = jfc.getSelectedFile();        
FileInputStream   fis   = new FileInputStream( input );
                
PreparedStatement pstmt = conn.prepareStatement("UPDATE USB_PERSONS SET UNTERSCHRIFT = ? WHERE ID = ?");
pstmt.setBinaryStream( 1, fis, (int)input.length() );
pstmt.setInt(2, Integer.parseInt(persnr));
pstmt.executeUpdate();
pstmt.close();
fis.close();  
conn.commit();


Danke nochmals!
 

metaltiffy

Mitglied
Ich hab da ma was vorbereitet...

ähh.. ich meine ich habe alten Code gefunden ^^


Speichern eines Bilds als BLOB in einer Datenbank

Code:
final Button speichernButton = new Button(shell, SWT.NONE);
speichernButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
try {
					Class.forName("oracle.jdbc.driver.OracleDriver");
	cn = DriverManager.getConnection(URL, USER, PASSWD);
	File fl = new File( "H:/Java/Datenbanktest/nemo.jpg" );                                  
	fis     = new FileInputStream( fl );
	// UPDATE Table SET Column = ? WHERE ......	
	pst = cn.prepareStatement("update DVD set BLOB_BILD = ? where DVD_Titel Like '%Nemo%'" );
	pst.setBinaryStream( 1, fis, (int)fl.length() );  
                pst.executeUpdate();
	System.out.println( fl.length() + " Bytes successfully loaded." );
				} catch (Exception ex) {
					System.out.println(ex);
					ex.printStackTrace();
				} finally {
					try {
						if (null != fis)
							fis.close();
					} catch (Exception ex) {
					}
					try {
						if (null != st)
							st.close();
					} catch (Exception ex) {
					}
					try {
						if (null != cn)
							cn.close();
					} catch (Exception ex) {
					}
				}// ende finally
			}
		});
speichernButton.setText("speichern");
speichernButton.setBounds(269, 39, 93, 23);


Auslesen eines Bildes und speichern

Code:
public File bildHolen(){
	try {
		int  var_id = 3;
            Statement st3 = cn.createStatement();  //cn ist die connection
            rs3 = st3.executeQuery("SELECT BILD FROM Table WHERE id = "+var_id); 
            if (!rs3.next()) { 
            	return new File(""); 
            } else { 
            		byte[] buffer = new byte[8192];            
            		int bytesRead = 0;             
            		is = rs3.getBinaryStream("BLOB_BILD");   
            		outFile = new File("c:/möp.jpg");            
            		fileOutputStream = new FileOutputStream(outFile);
            		while ((bytesRead = is.read(buffer)) > 0) {                
            			fileOutputStream.write(buffer, 0, bytesRead);            
            			}            
            		fileOutputStream.flush();  
		}
		catch (Exception ex){ex.printStackTrace();}
	finally {
	        try {
                                if (null != is) is.close(); 
                           } catch (Exception ex) {}
	            try {
		if (null != rs3)	
                                rs3.close();
                            } catch (Exception ex) {}
		try{
		if (null != fileOutputStream) fileOutputStream.close(); } catch (Exception ex){}
		} // ende finally		
		return outFile; 
		}



So lief das bei mir.. vergleich das ma mit deinem..
[/quote]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
D MySQL Bild aus DB auslesen und auf FTP Speichern Datenbankprogrammierung 7
M Bild schreiben und einlesen Datenbankprogrammierung 2
S binärdatei aus datenbank in bild umwandeln Datenbankprogrammierung 7
G Bild aus als OLE-Typ aus MS Acces auslesen Datenbankprogrammierung 3
Y Hibernate - Bild speichern Datenbankprogrammierung 4
M Bild von Datenbank in jsp anzeigen Datenbankprogrammierung 7
J Bild aus Mysql Blob in Webseite einbinden Datenbankprogrammierung 9
K Bild via JDBC und MySQL ausgeben Datenbankprogrammierung 2
EagleEye Bild in Datenbank speichern und wieder anzeigen Datenbankprogrammierung 6
R Bild in MySql speichern Datenbankprogrammierung 1
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
D Oracle Gateway oder Relay-Server Datenbankprogrammierung 5
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
M Oracle SQL Zeitabstand in Tagen Datenbankprogrammierung 11
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
L Oracle Oracle Datumsspalte auslesen Datenbankprogrammierung 5
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
L LOAD DATA INFILE mit Oracle Datenbankprogrammierung 24
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
R ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw) Datenbankprogrammierung 4
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8
R DB2 Oracle 12 - invalid username/passwort Datenbankprogrammierung 1
AssELAss Verbindung i5 Series 7.1 / 7.2 (DB2) mit Oracle SQL Developer Datenbankprogrammierung 3
C Von Oracle zu Couchbase Datenbankprogrammierung 1
E Was sind die Vorteile von DB2 im Gegensatz zu einer Oracle-Datenbank? Datenbankprogrammierung 5
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
S Oracle Database 11g , eclipse , Tabelle erstellen Datenbankprogrammierung 2
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
Kenan89 Oracle passwortspalte Datenbankprogrammierung 2
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
S Problemme mit oracle Datenbankprogrammierung 13
H Oracle Hibernate + Oracle Datenbankprogrammierung 3
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
1 Java - Oracle Restore Point Datenbankprogrammierung 2
X Rollback mit Savepoint funktioniert auf Oracle nicht (ORA-01086) Datenbankprogrammierung 4
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
M Kann Oracle Datenbanktreiber nicht laden Datenbankprogrammierung 5
F Performance-Tool für Oracle Datenbankprogrammierung 2
Dit_ Oracle Oracle DB | Installation Datenbankprogrammierung 3
T Datum anpassen in Oracle Datenbankprogrammierung 5
R Oracle Java -> Tomcat -> Oracle Datenbankprogrammierung 4
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
H Oracle DBUnit/JUnit auf Oracle mit verschiedenen Schemata? Datenbankprogrammierung 8
G Stored Procedure in Oracle, Txt erzeugen Datenbankprogrammierung 9
G Oracle Zeile löschen Datenbankprogrammierung 2
G Auf Oracle Schema Name zugreifen Datenbankprogrammierung 7
G INSERT DATE in Oracle-DB Datenbankprogrammierung 11
J Oracle oder SQL-Server Datenbankprogrammierung 18
A Oracle Session Parameter per JDBC? Datenbankprogrammierung 14
Z [ORACLE] Ausgabe Tabelle im GUI Datenbankprogrammierung 4
S Oracle Trigger Datenbankprogrammierung 5
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
L JDBC Oracle Datenbankprogrammierung 2
N Oracle DB liefert nicht alle Datensätze Datenbankprogrammierung 3
H Oracle - Indizes werden nicht genommen Datenbankprogrammierung 6
P Probleme mit Oracle Timestamp Datenbankprogrammierung 3
A Loader-Dateien in Oracle Datenbankprogrammierung 4
G Oracle DB Link Datenbankprogrammierung 3
padde479 Connection String Oracle Datenbankprogrammierung 5
S Oracle Abfrage mit Platzhaltern Datenbankprogrammierung 3
D Oracle Datenbank exportieren Datenbankprogrammierung 3
Q admin tool für oracle datenbank - freeware Datenbankprogrammierung 7
G Blob aus Oracle-Datenbank Datenbankprogrammierung 2
J jdbc Oracle Connection refused Datenbankprogrammierung 6
S Oracle JDBC Treiber Problem Datenbankprogrammierung 4
M Verbindung zu Oracle DB Datenbankprogrammierung 4
G Float Problem Java Oracle Datenbankprogrammierung 4
O Vector als Blob in Oracle Datenbank speichern Datenbankprogrammierung 3
O Oracle 11g wirft bei 90 % der installation eine Exception ? Datenbankprogrammierung 5
W ID des letzten eingefügten Werts ermitteln (Oracle) Datenbankprogrammierung 4
ARadauer Date Problem bei Oracle DB Datenbankprogrammierung 4
R oracle Anbindung geht im jar nicht Datenbankprogrammierung 8
D Insert Oracle BLOB Datenbankprogrammierung 1
O Oracle Client Software für ojdbc5! Datenbankprogrammierung 1
Y ORACLE - Autoincrement funktioniert nicht Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
M Problem mit SUBSTR (Oracle) bzw. substring (Java) Datenbankprogrammierung 13
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E [SQL, Oracle] Zeile einfügen Datenbankprogrammierung 8
G Connection zu einer Oracle DB erstellen Datenbankprogrammierung 8
L Oracle: PL/SQL und Java Datenbankprogrammierung 3
K Oracle XE Connection Problem Datenbankprogrammierung 2
T INSERT-Befehl in Java für Oracle Datenbankprogrammierung 4
G Oracle-Record auslesen Datenbankprogrammierung 2
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
H Oracle - Partionierung von Tabellen Datenbankprogrammierung 4
H Oracle XE 10 mit Java Datenbankprogrammierung 4
B Oracle Driver Probleme Datenbankprogrammierung 2
R ResultSet liefert oracle.sql.TIMESTAMP, aber unbrauchbar Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben