Blob in Oracle-DB einfügen (veraltete Methode)

Status
Nicht offen für weitere Antworten.

ak

Bekanntes Mitglied
Hallo Leute,

ich möchte ein Bild in ein blobfeld einer Oracle-DB per JDBC einfügen. Ich habe da ein Beispiel im Netzt gefunden, welches auch funktioniert.
Mein Problem ist, dass in diesem Beispiel eine veraltete Methode vorkommt und ich nicht weiss, wie ich diese ersetzen soll. Hier mal die veraltete Methode:

Code:
BLOB blob = ((OracleResultSet)rset).getBLOB (1);
OutputStream ostream = blob.getBinaryOutputStream ();  //getBinaryOutputStream  ist deprecated

Hier mal das komplette Beispiel. Würdet ihr das evtl. anders machen? Wenn ja wie? wie kann ich das von oracle unabhängig machen, so dass es auch bei anderen DB's mit Blobs funktioniert?

Code:
import java.sql.*;
import java.io.*;
import java.util.*;

// Importing the Oracle Jdbc driver package makes the code more readable
import oracle.jdbc.driver.*;

//needed for new CLOB and BLOB classes
import oracle.sql.*;

public class LobExample
{
  public static void main (String args [])
       throws Exception
  {
    // Register the Oracle JDBC driver
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    // Connect to the database
    // You can put a database name after the @ sign in the connection URL.
    Connection conn =
      DriverManager.getConnection ("jdbc:oracle:oci8:@", "scott", "tiger");

    // It's faster when auto commit is off
    conn.setAutoCommit (false);

    // Create a Statement
    Statement stmt = conn.createStatement ();

    try
    {
      stmt.execute ("drop table persons");
    }
    catch (SQLException e)
    {
      // An exception could be raised here if the table did not exist already.
    }

    // Create a table containing a BLOB and a CLOB
    stmt.execute ("create table persons (name varchar2 (30), picture blob)");
    
    // Populate the table
    stmt.execute ("insert into persons values ('John', EMPTY_BLOB())");
    
    // Select the BLOB 
    ResultSet rset = stmt.executeQuery ("select picture from persons where name 
= 'John'");
    if (rset.next ())
    {
      // Get the BLOB locator from the table
      BLOB blob = ((OracleResultSet)rset).getBLOB (1);

      // Declare a file handler for the john.gif file
      File binaryFile = new File ("john.gif");

      // Create a FileInputStream object to read the contents of the GIF file
      FileInputStream istream = new FileInputStream (binaryFile);

      // Create an OutputStram object to write the BLOB as a stream
      OutputStream ostream = blob.getBinaryOutputStream ();

      // Create a tempory buffer  
      byte[] buffer = new byte[1024];
      int length = 0;

      // Use the read() method to read the GIF file to the byte 
      // array buffer, then use the write() method to write it to 
      // the BLOB.
      while ((length = istream.read(buffer)) != -1)
        ostream.write(buffer, 0, length);

      // Close the inputstream and outputstream
      istream.close();
      ostream.close();

      // Check the BLOB size
      System.out.println ("Number of bytes written = "+blob.length());
    }

    // Close all resources
    rset.close();
    stmt.close();
    conn.close(); 
  }
}
 

ak

Bekanntes Mitglied
Das obere Beispiel ist aus dem Netz.

So habe ich es jetzt gemacht, das dürfte auch bei nicht Oracle-DB's funktionieren:

Code:
public String oeffne_DB(){
    String oracleURL="jdbc:oracle:thin:@anton:1521:kurse";
    
    //  oracle-Treiber laden
    try{
      Class.forName("oracle.jdbc.driver.OracleDriver");  
    }catch(ClassNotFoundException err){
      return err.toString();  
    }
    
    try{
      //Connection öffnen
      connection = DriverManager.getConnection(oracleURL, "Scott", "Tiger");
      
    }catch(SQLException err){
      return err.toString();
    }
    
    return "ok";
  }

Code:
public void save_pic_to_blob2(Dozenten_BEAN doz, File image){
    //ein bild wird im blob-Feld der dozenten DB gespeichert
    
    if(oeffne_DB().equals("ok")){
         
      try {
        
        connection.setAutoCommit(false);
        Statement stmt = connection.createStatement ();
        
        // leeren Blob einfügen
        stmt.execute ("update scott.dozent set Bild= EMPTY_BLOB() " +
        		"where D_NR="+String.valueOf(doz.getDoz_ID()));
        
        // Bild per Fileinputstream in den Blob 
        try {
          PreparedStatement pre = connection.prepareStatement("update scott.dozent " +
          		"set Bild=? where D_NR="+String.valueOf(doz.getDoz_ID()));
          pre.setBinaryStream(1, new BufferedInputStream(
              new FileInputStream(image)), (int) image.length());
         
          pre.executeUpdate();
          connection.commit();
          connection.close();
        } catch (FileNotFoundException e1) {
          doz.setDb_error(e1.toString());
        }
        
      }catch (SQLException e) {
        
        doz.setDb_error(doz.getDb_error()+" - "+e.toString());     
      }
    }
  }
 
G

Gast

Gast
Guten Morgen!
Ich habe eine Frage, welche Antwort ich hier leider noch nicht gefunden habe!
Und zwar habe ich einen Quellcode, in dem zweimal "String.valueOf" vorkommt!
z.B. String.valueOf(String.valueOf(String name)).
Meine Frage jetzt, warum schreibt man das zweimal hintereinander? Hat das einen tieferen Sinn?
Würde mich über eine Antwort freuen!
 
G

Gast

Gast
Sorry aber das passt mal garnicht zum Thema. Aber wo wir schon dabei sind, wo bekomme ich einen günstigen Geschirrspüler her?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
G Blob aus Oracle-Datenbank Datenbankprogrammierung 2
O Vector als Blob in Oracle Datenbank speichern Datenbankprogrammierung 3
D Insert Oracle BLOB Datenbankprogrammierung 1
O Oracle Blob in MySQL Blob umwandeln Datenbankprogrammierung 2
krgewb Breite und Höhe von Blob Datenbankprogrammierung 7
D MySQL Sicherheitslücke als Blob? Datenbankprogrammierung 3
buggy84 MySQL BLOB Geschwindigkeit Datenbankprogrammierung 16
L H2 Blob Dateien in der DB komprimieren? Datenbankprogrammierung 8
L H2 Blob Spalte im Client anzeigen Datenbankprogrammierung 2
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
E Wie kann ich textdateien, die als BLOB abgespeichert sind, aus der Datenbanktabelle auslesen? Datenbankprogrammierung 23
E Wie kann man BLOB-Spalten in DB2 einfügen? Datenbankprogrammierung 9
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
J BLOB to ImageIcon? Datenbankprogrammierung 3
Kenan89 Sinnvoller URL oder BLOB? Datenbankprogrammierung 2
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
N Leeres Blob in ein PreparedStatement eintragen Datenbankprogrammierung 2
C MySQL Fragen zu BLOB zu byte[], Date zu java.util.Date uvm. Datenbankprogrammierung 6
D Blob MimeTyp auslesen Datenbankprogrammierung 2
P MySQL Objekt aus BLOB auslesen Datenbankprogrammierung 3
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
C MP3 in DB als Blob, wieder auslesen und als MP3 speichern??? Datenbankprogrammierung 8
S BLOB in Datei speichern Datenbankprogrammierung 8
S Hibernate Blob mit Stream speichern Datenbankprogrammierung 3
V PostgreSQL langsam (Blob) Datenbankprogrammierung 10
B Java Derby Datenbank mit CLOB & BLOB Datenbankprogrammierung 5
J Bild aus Mysql Blob in Webseite einbinden Datenbankprogrammierung 9
H Blob erzeugen Datenbankprogrammierung 2
T Inhalt von Blob in Console ausgeben Datenbankprogrammierung 2
G Sybase IMAGE-Daten zu MySQL als BLOB schreiben. Datenbankprogrammierung 2
T Datei (Blob) mit verknüpfter Software öffnen? Datenbankprogrammierung 4
G File nach Blob konvertieren ? Datenbankprogrammierung 6
G JPEG to BLOB Datenbankprogrammierung 7
H File into blob Datenbankprogrammierung 3
EagleEye Blob -> backup Datenbankprogrammierung 6
Y Problem mit Ablage einer Datei in einer Datenbank als BLOB Datenbankprogrammierung 6
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
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
J jdbc Oracle Connection refused Datenbankprogrammierung 6

Ähnliche Java Themen


Oben