cheers!

i got it fixed now :) that one was causing me major headaches.


----- Original Message -----
From: "Nicholson, Robb" <[EMAIL PROTECTED]>
To: "'Struts Users Mailing List'" <[EMAIL PROTECTED]>
Sent: Tuesday, December 23, 2003 4:10 PM
Subject: RE: converting a FormFile to a Blob object


> You have to insert the record using an empty LOB, then select the record
for
> update and write the byte stream to the LOB.
>
> Here's an example insert method from my DAO that I used for the same
purpose
> recently.
>
> Might not be the most efficient or prettiest code out there, but it works
> like a champ. We've tested it with image files, Word, Excel, PDF, etc. The
> VO being passed in has a FormFile field "DataFile", and a bunch of other
> fields for name, type, etc.
>
> I had to turn autocommit off to get this to work. On another project I did
> something similar for CLOBS, but the transaction was handled through
session
> bean, so in that case take those lines out.
>
>
>     public int insert(StatsDocumentsVo vo) throws CapException,
SQLException
>     {
>
>   long docId = getNextDocId();
>         Connection conn = null;
>         PreparedStatement ps = null;
>         ResultSet rs = null;
>         BLOB binLgObj = null;
>         OutputStream out = null;
>         int rc = -1;
>         int ii = 1;
>
>         try
>         {
>             conn = getConnection();
>             conn.setAutoCommit(false); // to avoid "ORA-01002: fetch out
of
> sequence"
>
>
>             /*
>              * Insert the record with a blank holding spot for LOB
>              */
>             ps = conn.prepareStatement(SQL_EXT_INSERT);
>             ps.setLong(ii++,docId );
>             ps.setString(ii++,vo.getDescr());
>             ps.setString(ii++, vo.getMimeType());
>             ps.setString(ii++,vo.getLastUpdUser());
>             ps.setString(ii++,vo.getDocumentName());
>             ps.setString(ii++,vo.getOsoNumber());
>             ps.setBlob(ii++, oracle.sql.BLOB.empty_lob());
>
>             log.debug("Ready to execute the insert statement (empty
> BLOB).");
>             rc = ps.executeUpdate();
>
>             /*
>              * Get the record back from the database
>              */
> ps.close();
>             ps = conn.prepareStatement(SQL_GET_BY_PK);
>             ps.setLong(1, docId);
>             log.debug("Ready to execute the select statement to get ref to
> the empty blob.");
>             rs = ps.executeQuery();
>             rs.next();
>
>             // get empty blob pointer out of result set
>             log.debug("Ready to get empty blob out of result set.");
>             binLgObj = ((OracleResultSet)rs).getBLOB("DATA_FILE");
>
>             // open up the output stream to write into blob
>             out = binLgObj.getBinaryOutputStream();
>
>             // write file byte[] into the blob
>             log.debug("Ready to actually write the file's byte[] array
into
> the blob.");
>             out.write( ((FormFile)vo.getDataFile()).getFileData());
>             log.debug("Closing output stream.");
>             out.close();
>
>             // commit the xaction
>             log.debug("Commit the xaction to the DB");
>             conn.commit();
>
>
>             log.debug("Closing result set, prepared statement.");
>             rs.close();
>
>         }
>         catch (java.io.FileNotFoundException e)
>         {
>             e.printStackTrace();
>             throw new CapException(e.getMessage());
>         }
>         catch (java.io.IOException e)
>         {
>             e.printStackTrace();
>             throw new CapException(e.getMessage());
>         }
>         finally
>         {
>             closeResources(conn,ps);
>         }
>
>         return rc;
>     }
>
>
>
> -----Original Message-----
> From: Claire Wall [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 23, 2003 9:44 AM
> To: Struts Users Mailing List
> Subject: converting a FormFile to a Blob object
>
>
> hi,
>
> I have a jsp page which uploads a file to a database. I have no problems
> storing the file in an SQLServer or MySQL database by using the
> setBinaryStream() method of a PreparedStatement. The file gets upload no
> problem.
>
> However, when I try to upload this file to an oracle database (BLOB
column)
> it does not work. I'm sure that i have to use the setBlob() method of the
> PreparedStatement, however, my dilemma is that I cannot find a way to
> convert my file from FormFile format to sql Blob format. Does anybody know
> how to do this as I've looked everywhere and haven't come up with a
> solution.
>
> Any help would be much appreciated
>
>
> thanks
> claire
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to