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]