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:
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?
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();
}
}