Handling BLOB & CLOB

Hi all,
Can anyone please tell me how to handle BLOB and CLOB using java? ie how to retrieve BLOB & CLOB data from the database?
Thanx in advance,
Regards,
Mani

Starting with version 1.2 the ResultSet interrface manages BLOB and CLOB types: you can use the following methods:
resultSet.getBlob(int i)
resultSet.getClob(int i)
This is what you needed?

Similar Messages

  • How to handle blob/clob?

    In my process I can successfully write to a blob or clob field (via database adapter). But I'm not able anymore to get the value out of the database (Oracle Lite). I always get following error:
    <remoteFault xmlns="http://schemas.oracle.com/bpel/extension">
    <part name="code">
    <code>0</code>
    </part>
    <part name="summary">
    <summary>file:/E:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_GetStatus_1.0.jar/SelectJobStates.wsdl [ SelectJobStates_ptt::SelectJobStatesSelect_key_typeFrom_typeTo(SelectJobStatesSelect_key_typeFrom_typeTo_inparameters,MainCollection) ] - WSIF JCA Execute of operation 'SelectJobStatesSelect_key_typeFrom_typeTo' failed due to: Exception: Nicht erfolgreiche Ausführung von DBReadInteractionSpec. Abfragename: [SelectJobStatesSelect], Descriptor-Name: [GetStatus.Main]. ; nested exception is: ORABPEL-11614 Exception: Nicht erfolgreiche Ausführung von DBReadInteractionSpec. Abfragename: [SelectJobStatesSelect], Descriptor-Name: [GetStatus.Main]. Weitere Informationen finden Sie in der Root Exception. Verursacht von Exception [TOPLINK-4002] (OracleAS TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.DatabaseException Exception-Beschreibung: java.sql.SQLException: Internal Error:LiteThinJDBCLob: One or More Invalid Handle(s) Interne Exception: java.sql.SQLException: Internal Error:LiteThinJDBCLob: One or More Invalid Handle(s) Fehlercode:0.</summary>
    </part>
    <part name="detail">
    <detail>Exception-Beschreibung: java.sql.SQLException: Internal Error:LiteThinJDBCLob: One or More Invalid Handle(s) Interne Exception: java.sql.SQLException: Internal Error:LiteThinJDBCLob: One or More Invalid Handle(s) Fehlercode:0</detail>
    </part>
    </remoteFault>
    Trying on the console with a polsql skript I got the following:
    [POL-3006] null handle is not allowed
    Any ideas?
    Yves
    PS. Is there a GUI client which can browse data on a Oracle Lite database?

    Hi Pete,
    The problem is with using Oracle's CLOB and BLOB implementation. I haven't even started using BLOB and CLOB. I want to collect data of BLOB and CLOB types from oracle and store it in XML file and after that if required, collect the same data from xml file and store it back to oracle table. I can do these things for all the rest datatypes but BLOB and CLOB. How to proceed?
    Thanks -
    Samit

  • Basic doubt on BLOB/CLOB

    In Oracle 10g, the max size for BLOB/CLOB is mentioned as 4GB.
    If i store a binary file of size 2MB in a BLOB field, will it block the whole 4GB (4096MB) space for this. Or as like Varchar only the actual file size is used and leave the remaining 4094 MB as free.
    Please clarify.

    Could not resist it... here's a docu link to info about new LOB handling.

  • ORA-22275 :invalid LOB locator specified error while loading BLOBs/CLOBS.

    Hello All,
    I am trying to load BLOB/CLOB data from a client oracle DB to the oracle db on our side,we are using ODI version 10.1.3.5.6,which reportedly has the issue of loading BLOB/CLOBS solved.I am using
    The extraction fails in the loading stage when inserting data into the C$ table with the following error.
    "22275:99999 :java.sql.BatchUpdateException:ORA-22275:Invalid LOB locator specified".
    Kindly let me know how I can resolve this issue as the requirement to load this data is very urgent.
    Thanks,
    John

    One alternate way can be done out of ODI as ODI is still not able to resolve this issue. You can trim these fields (CLOB/BLOB) and push this data as separate fields into ODI and at the reporting end you can again concatenate them.
    May be this may solve your problem ....it solved mine.
    --XAT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Yest we can store BLOB,CLOB

    Hi,
    it is possible to strore the BLOB , CLOB and BFILES IN THE ORACLE8 and above DATABASE.
    For this you can take the help of the DBMS_LOB package.
    regards,
    khaleel

    How do you propose to do that? You are limited to 255 bytes per cell in Excel. If you come up with a scheme to lay down blocks of data and some way to uniquely ID them, then yes, you can; but you have to overcome that 255 byte boundary per cell before you can do much.
    A CLOB can be stored as a string, but once again... there is that max character boundary to overcome in Excel.

  • Display BLOB/CLOB image data in OBIEE 11g

    Dear Gurus,
    I want to display employee profile picture in dashboard, the image data was saved as blob/clob image.
    How to configure and display it in obiee?
    Regards
    JOE

    Hi
    Thanks for your quick response.
    actually im not using EBS, im just using publisher with OBIEE 11g.
    if explain step by step what you wrote first replay-
    Let i have a table with one BLOB column.
    1) first load blob data to my table
    2) create data model from oracle publisher.
    3) change the xdm file with above tagline , my xdm file is in below link-
    C:\mw_bi_home\instances\instance1\bifoundation\OracleBIPresentationServicesComponent\coreapplication_obips1\catalog\SampleAppLite\root\shared\zia%2exdm
    i don't know is that right step? because if i re-open the xdm file after change by your given tagline its shows error.
    I will grateful to you please give me a little explanation which file i can put the following tagline.
    _<fo:instream-foreign-object content-type="image/jpg"><xsl:value-of select=".//IMAGE_ELEMENT"/></fo:instream-foreign-object>_
    Thanks again and waiting your feedback -
    @zia

  • Losing NATIONAL CHARACTERS(blob- clob- table). unistr?

    Hello!
    I have a problem with national characters. My example is as follows:
    1. A csv file is uploaded from disk to htmldb_application_files
    2. This BLOB is then converted to CLOB with dbms_lob.converttoclob()
    3. Data from this CLOB is copied to PL/SQL array.
    4. From PL/SQL array to table in database.
    The problem: Either data copied to table in database loses national characters (display strange characters instead of national), or if I set my national character set id as an argument of dbms_lob.converttoclob() function I have an error - says that file is inconvertible.
    What is wrong? How can I solve my problem? Can unistr() help somewhere? Any ideas?
    Tom

    Duplicate posting, being addressed at:
    losing NATIONAL CHARACTERS(blob->clob->table). unistr?

  • Handling BLOBs with CMP Beans

    Hi,
    is there a detailed example how to handle Blob's with CMP Beans?
    I'm trying to store some images in a database (Oracle 9i) using CMP Beans and Oracle iAS 9.03 and jdk 1.4.
    Thanks in advance
    Jens

    We are currently developing a How-To on this and will put this on OTN.
    1) Code snippet from Bean Class:
    public abstract byte[] getPicture();
    public abstract void setPicture(byte[] newPicture);
    public Long ejbCreate(Long empno, byte[] newPicture)
    setEmpno(empno);
    setPicture(newPicture);
    return empno;
    public void ejbPostCreate(Long empno, byte[] newPicture)
    2) Mapping in the orion-ejb-jar.xml:
    <entity-deployment name="EmployeePicture" data-source="jdbc/OracleDS" table="EMPPIC">
    <primkey-mapping>
    <cmp-field-mapping name="empno" persistence-name="EMPNO" persistence-type="NUMBER(8)"/>
    </primkey-mapping>
    <cmp-field-mapping name="empno" persistence-name="EMPNO" persistence-type="NUMBER(8)"/>
    <cmp-field-mapping name="picture" persistence-name="PICTURE" persistence-type="BLOB(4000)"/>
    </entity-deployment>
    3) Create the client to create the bean:
    Long empNo =(Long) Long.valueOf(request.getParameter("EmpNo"));
    String fileName =request.getParameter("ImageFileName");
    InputStream is = new BufferedInputStream(new FileInputStream(fileName));
    int len;
    // Initialize byte array
    byte byteValue[] = new byte[2048000];
    len = is.read(byteValue);
    EmployeePictureLocal employeePicture = empHome.create(empNo , byteValue);
    out.println("Picture of Emp#:"+empNo +" successfully Loaded into DB <br> <br>");
    4) Code snippet to view the image :
    Long empNo =(Long) Long.valueOf(request.getParameter("EmpNo"));
    out.println("Picture of Emp#"+empNo);
    EmployeePictureLocal emp = empHome.findByPrimaryKey(empNo);
    response.setContentType("image/jpeg");
    OutputStream os = null;
    os = response.getOutputStream() ;
    byte[] pic = emp.getPicture();
         os.write(pic);
    os.close();
    os = null;
    Let me know if this helps
    thanks
    Debu

  • 10g BLOB/CLOB can we store more than 4k in SQL

    Dear Friends
    I know we had issues with BLOB and CLOB storing more than 4k in Oracle 8i using SQL. Is it the same in 10g BLOB/CLOB can we store more than 4k in SQL?
    Please help me with some documentationw which explains these aspects with CLOB and BLOB in 10g
    Thanks
    Farouk

    Thanks for your help,
    I understand we can store blobs more than 4k in 10g using DBMB_LOG but there is a constraint in 8i that using SQL u can store directly only 4k and using a bind variable in PL/SQL we can store upto 32K. Is that the same in 10g or can we store directly using sql more than 4k?
    Thanks
    Farouk

  • BLOB-- CLOB-- BLOB conversion reducing length of BLOB

    Hi,
    I am using the following BLOB-->CLOB and CLOB-->BLOB conversion functions :
    CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB)
    RETURN CLOB
    AS
         v_clob CLOB;
         v_varchar RAW(32001);
         v_varchar1 VARCHAR2(32001);
         v_start     INTEGER := 1;
         v_buffer INTEGER := 32001;
    BEGIN
         DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
         FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)
         LOOP
         DBMS_LOB.READ(blob_in,v_buffer,v_start,v_varchar);
    DBMS_LOB.WRITEAPPEND(v_clob, utl_raw.length(v_varchar), v_varchar);
         v_start := v_start + v_buffer;
         END LOOP;
    RETURN v_clob;
    END blob_to_clob;
    CREATE OR REPLACE FUNCTION clob_to_blob (clob_in IN CLOB)
    RETURN BLOB
    AS
         v_blob BLOB;
         v_varchar RAW(32001);
         v_varchar1 RAW(32001);
         v_start     INTEGER := 1;
         v_buffer INTEGER := 32001;
    BEGIN
         DBMS_LOB.CREATETEMPORARY(v_blob, TRUE);
         FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(clob_in) / v_buffer)
         LOOP
         DBMS_LOB.READ(clob_in,v_buffer,v_start,v_varchar);
    DBMS_LOB.WRITEAPPEND(v_blob, utl_raw.length(v_varchar), v_varchar);
              v_start := v_start + v_buffer;
         END LOOP;
    RETURN v_blob;
    END clob_to_blob;
    I am using these functions to convert image files, stored as BLOB to CLOB for intermediate storage, and then converting them back to BLOB. In this process, I see a loss of information when the image is converted from CLOB to BLOB ...which is seen by using dbms_lob.getlength() .Using the following sql query:
    select dbms_lob.getlength(file_body),
    dbms_lob.getlength(blob_to_clob(file_body)),
         dbms_lob.getlength(clob_to_blob(blob_to_clob(file_body)))
    from my_table where image_id in (8819)
    i see that returned length is usually half in the 3rd column, i.e. for dbms_lob.getlength(clob_to_blob(blob_to_clob(file_body))). There is no change in length for 1st and 2nd columns. Could you please let me know why length is getting lost in the CLOB to BLOB conversion ? Thanks.

    Thanks for replying.
    This is required because we have to store images in ldt files using FNDLOAD, whiich only supports CLOB, not BLOB. I understand that images stored in binary formats should be stored in BLOB only, but I am exploring the possibility of converting BLOB format to CLOB and then back to BLOB without loss of information. Any pointers in this regard are appreciated. Thanks !

  • BLOB/CLOB field issue

    Hi All,
    We have a requirement where there are BLOB/CLOB fields in the database containing word documents/gifs/
    pdf files which need to pulled in the report as attachments. The attachments then need to be opened using the
    respective applications like MS word etc.
    Please let me know if this is feasible and if Oracle BI EE supports BLOB/CLOB data types. Are there any projects
    which have implemented similar requirements?
    Thanks in advance
    Regards,
    Andy

    This can be done, but might need lot of work. Have you taken a look at this, especially first one.
    http://oraclebizint.wordpress.com/2007/12/10/oracle-bi-ee-101332-displaying-blob-images-using-plsql-gateway/
    http://oraclebizint.wordpress.com/2007/11/12/oracle-bi-ee-101332-working-with-clob-fields/
    - Madan

  • How can i handle BLOB.

    How can i handle BLOB data.

    Thank you for the input, but it wasn't so usefull. I found a soluten to get the get a blob from the database.
    <snip>
    MimeBodyPart mbp = new MimeBodyPart();
    // Create the Multipart to be added the parts to
         Multipart mp = new MimeMultipart();
    while( rs.next()) {
    BLOB Attachment     = rs.getBLOB("att");
    String FileName     = rs.getString("nam");
    String FileType     = rs.getString("ext");
    // Create and fill the second message part (Attachements)     
         MimeBodyPart mbp1 = new MimeBodyPart();
         String type = (FileType != null ? FileType : dftMime);
         String fileName = (FileName != null ? FileName : dftName);
         mbp1.setDisposition(Part.ATTACHMENT);
         mbp1.setFileName(fileName);
         mbp1.setDataHandler(new
         DataHandler(new BLOBDataSource(Attachment, type)));
         mbp1.setHeader( "Content-Transfer-Encoding", "base64" );
         mp.addBodyPart(mbp1);
    Now i get the following stacktrace:
    A send error is occured. Exit program.null
    javax.mail.internet.ParseException
    at javax.mail.internet.ContentType.<init>(ContentType.java:89)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1249)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1001)
    at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:333)
    at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1255)
    at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2012)
    at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1980)
    at javax.mail.Transport.send(Transport.java:97)
    at miag.app.mail.SendMail.send(SendMail.java:150)
    at miag.app.mail.SendMail.main(SendMail.java:37)
    The email will not be sent.
    Thank you
    Rene

  • How to handle BLOB field in receiver JDBC adapter into ABAP table

    Dear Experts,
    I am working in a synchronous scenario with Sender ABAP Proxy to Oracle Database as receiver via SAP PO 7.4.I will be calling a stored procedure view with fields ID, NAME,Age,*** and BLOB (Image binary).
    1. The response from Oracle Database field BLOB is to be stored in ABAP table.Would I have to write any JAVA program to read the BLOB or the receiver JDBC adapter will handle it and store in a table by using ABAP proxy once it reaches ECC.
    2. If yes, would the JAVA program have to deal with other 4 fields.
    3. Can I use a UDF mapping to this BLOB field.
    Regards
    Rebecca...

    Dear Praveen,
    Thanks for your response...
    Please correct me if I am wrong.
    1. For 1-1 response mapping for BLOB field, I will use just use the below UDF code.
    public static byte[] hexStringToByteArray(String s) { 
                int len = s.length(); 
                byte[] data = new byte[len / 2]; 
                for (int i = 0; i < len; i += 2) { 
                            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) 
                                                                                         + Character.digit(s.charAt(i+1), 16)); 
                return data; 
    2. ===Using the byte data, create binary attachment in mapping for abap proxy response===
    Could you please share how to create the binary attachment.. I am not clear
    Regards...

  • How to handle blob data with java and mysql and hibernate

    Dear all,
    I am using java 1.6 and mysql 5.5 and hibernate 3.0 . Some time i use blob data type . Earlier my project's data base was oracle 10g but now i am converting it to Mysql and now i am facing problem to save and fetch blob data to mysql database . Can anybody give me the source code for blob handling with java+Mysql+Hibernate
    now my code is :--
    ==================================================
    *.hbm.xml :--
    <property name="image" column="IMAGE" type="com.shrisure.server.usertype.BinaryBlobType" insert="true" update="true" lazy="false"/>
    ===================================================
    *.java :--
    package com.shrisure.server.usertype;
    import java.io.OutputStream;
    import java.io.Serializable;
    import java.sql.Blob;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Types;
    import javax.naming.InitialContext;
    import javax.sql.DataSource;
    import oracle.sql.BLOB;
    import org.hibernate.HibernateException;
    import org.hibernate.usertype.UserType;
    import org.jboss.resource.adapter.jdbc.WrappedConnection;
    import com.google.gwt.user.client.rpc.IsSerializable;
    public class BinaryBlobType implements UserType, java.io.Serializable, IsSerializable {
    private static final long serialVersionUID = 1111222233331231L;
    public int[] sqlTypes() {
    return new int[] { Types.BLOB };
    public Class returnedClass() {
    return byte[].class;
    public boolean equals(Object x, Object y) {
    return (x == y) || (x != null && y != null && java.util.Arrays.equals((byte[]) x, (byte[]) y));
    public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
    BLOB tempBlob = null;
    WrappedConnection wc = null;
    try {
    if (value != null) {
    Connection oracleConnection = st.getConnection();
    if (oracleConnection instanceof oracle.jdbc.driver.OracleConnection) {
    tempBlob = BLOB.createTemporary(oracleConnection, true, BLOB.DURATION_SESSION);
    if (oracleConnection instanceof org.jboss.resource.adapter.jdbc.WrappedConnection) {
    InitialContext ctx = new InitialContext();
    DataSource dataSource = (DataSource) ctx.lookup("java:/DefaultDS");
    Connection dsConn = dataSource.getConnection();
    wc = (WrappedConnection) dsConn;
    // with getUnderlying connection method , cast it to Oracle
    // Connection
    oracleConnection = wc.getUnderlyingConnection();
    tempBlob = BLOB.createTemporary(oracleConnection, true, BLOB.DURATION_SESSION);
    tempBlob.open(BLOB.MODE_READWRITE);
    OutputStream tempBlobWriter = tempBlob.getBinaryOutputStream();// setBinaryStream(1);
    tempBlobWriter.write((byte[]) value);
    tempBlobWriter.flush();
    tempBlobWriter.close();
    tempBlob.close();
    st.setBlob(index, tempBlob);
    } else {
    st.setBlob(index, BLOB.empty_lob());
    } catch (Exception exp) {
    if (tempBlob != null) {
    tempBlob.freeTemporary();
    exp.printStackTrace();
    st.setBlob(index, BLOB.empty_lob());
    // throw new RuntimeException();
    } finally {
    if (wc != null) {
    wc.close();
    public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
    final Blob blob = rs.getBlob(names[0]);
    return blob != null ? blob.getBytes(1, (int) blob.length()) : null;
    public Object deepCopy(Object value) {
    if (value == null)
    return null;
    byte[] bytes = (byte[]) value;
    byte[] result = new byte[bytes.length];
    System.arraycopy(bytes, 0, result, 0, bytes.length);
    return result;
    public boolean isMutable() {
    return true;
    public Object assemble(Serializable arg0, Object arg1) throws HibernateException {
    return assemble(arg0, arg1);
    public Serializable disassemble(Object arg0) throws HibernateException {
    return disassemble(arg0);
    public int hashCode(Object arg0) throws HibernateException {
    return hashCode();
    public Object replace(Object arg0, Object arg1, Object arg2) throws HibernateException {
    return replace(arg0, arg1, arg2);
    =================================================================
    can anyone give me the source code for this BinaryBlobType.java according to mysql blob handling ..

    Moderator action: crosspost deleted.

  • Which is better - BLOB, CLOB or XMLTYPE?

    Hi All,
    We have to store XML in one of the fields in our table.
    XML size is not fix but its not so huge that we shold go for external LOBs.
    I mean it will be alwas less than 4G.
    Our concern here is, does CLOB allocates exactly as much memory needed as much the data is present,(something like VARCHAR2).
    How is it in case of BLOB and XMLTYPE as well?
    Is there any Oracle documentation or way (code snippet) to verify this?
    Thanks in advnace.
    Avinash.

    You have asked if CLOB allocates space like VARCHAR2 - yes it does. Maybe this example will be better:
    SQL> TRUNCATE TABLE test_table;
    Tabela zosta│a obciŕta.
    SQL> insert into test_table values(LPAD('A', 100, 'A'));
    1 wiersz zosta│ utworzony.
    SQL> insert into test_table values(LPAD('A', 1000, 'A'));
    1 wiersz zosta│ utworzony.
    SQL> insert into test_table values(LPAD('A', 10000, 'A'));
    1 wiersz zosta│ utworzony.
    SQL> COMMIT;
    Zatwierdzanie zosta│o uko˝czone.
    SQL> SELECT LENGTH(col1) FROM test_table;
    LENGTH(COL1)
             100
            1000
            4000
    SQL>

Maybe you are looking for

  • FrontRow leaves its Apps laying around when finished - why is this ?

    I've notice that after using FrontRow and returning to normal desktop that the various Apps such as iTunes, iTunes and iMovie are left around as inactive Apps rather than being properly terminated. Also the FrontRow App is left around and not termina

  • In-house production of asset through process order

    Dear Experts, We are procuring  raw material and doing in house production for this raw material. The process i followed is : we created a new order type and assigned settelement profile for asset under contruction while creating prod order it is ask

  • Currency translation with user defined exchange rates in a BEx report

    Hi guys, our business department requests a new functionality in our BW system. They want to simulate a currency translation in a BEX report. But this currency translation should be so flexible, that the user can change the exchange rates directly in

  • After market battery not working

    I have recenty purchased an after market battery for macbook pro and when i put the battery in the computer just dies??? if i take out the battery and just use the power source the computer works fine, then i put in the battery in and it just dies? a

  • Screen Calibration?

    What I believe I'm producing in Lightroom when opened in another application or viewed for instance on FB, is a much different image.  Screen Shot 24 below is the image I produced in Lightroom. The image below is out of MS Office Picture after the .R