Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2005

Tip: Looking for answers? Try searching our database.

Taking the contents of a Blob and writing it to a file

Thread view: 
MattC - 22 Oct 2005 16:31 GMT
I have a java.sql.Blob object that represents an XML file. I would like
to right the Blob to a file on the file system. Can someone tell me an
easy way to do this?
Roedy Green - 23 Oct 2005 11:28 GMT
>I have a java.sql.Blob object that represents an XML file. I would like
>to right the Blob to a file on the file system. Can someone tell me an
>easy way to do this?

use Blob.getBytes. From there see
http://mindprod.com/applets/fileio.html
for how you might decode it, and write it as a string, or write it as
raw bytes.

XML is a character string so  it properly belonged in a Clob, not a
Blob.

Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

steve - 24 Oct 2005 22:38 GMT
>> I have a java.sql.Blob object that represents an XML file. I would like
>> to right the Blob to a file on the file system. Can someone tell me an
[quoted text clipped - 7 lines]
> XML is a character string so  it properly belonged in a Clob, not a
> Blob.

you have to be a bit careful!!.
if it's in a clob and you are on oracle and your NLS language is set
incorrectly , your database will translate the content of it's clobs to a
different codepage, which might include conversion from single byte to
multibyte character sets.

sometimes ,  i might want to have chinese characters on my oracle database, i
generally write them to a blob , so that the database does not tanslate and
interpret them as single byte, instead of multibyte.

that said:
this is the code to get a blob , the "photo" is stored in the content field
of the database.
just modify the  "bo" to a file stream

   public static byte[] getPhoto(long photoId) throws Exception {
 static final int MAXBUFSIZE = 4096;
       Section section = null;
       PreparedStatement st = null;
       ResultSet rset = null;

       try {
           String sql =
               "Select content from photo_store where deleted=0 and
id=?";
           st = c.prepareStatement(sql);
           st.setLong(1, photoId); // Bind the photo id

           ////Oracle
           rset = st.executeQuery(); // Execute Query

           oracle.sql.BLOB blob = null;

           if (rset.next()) /*this is always true*/ {
               blob = (oracle.sql.BLOB) rset.getObject(1);
           }

           if (blob != null) {
               BufferedInputStream bis =
                   new BufferedInputStream(blob.getBinaryStream());
               ByteArrayOutputStream bo = new ByteArrayOutputStream();
               byte[] buf = new byte[MAXBUFSIZE];
               int n = 0;

               while ((n = bis.read(buf, 0, MAXBUFSIZE)) != -1) {
                   bo.write(buf, 0, n);
               }

               bo.flush();
               bo.close();
               bis.close();

               buf = null;

               return bo.toByteArray();
           }
       } catch (Exception ex) {
           Error_stuff.handleError(ex, -1, -1);

           // ex.printStackTrace();
       } finally {
           if (st != null) {
               try {
                   st.close();
               } catch (Exception ex1) {
                   Error_stuff.handleError(ex1, -1, -1);
               }
           }
       }

       return null;
   }


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.