/** * @author cqw * 向数据库插入Blob类型数据,数据库表 SSDATAFILE(SSDATAFILEID,STRFILENAME,STRTIMETICKS,BLOBFILE) * @param datafileid 文件id * @param filename 文件名 * @param timetick 时间戳 * @param file 文件 */ public static void insertForBlob(String datafileid,String filename,String timetick,File file)throws Exception{ //oracle中插入blob数据时,要先插入空EMPTY_BLOB(),然后再使用blob的输出流将数据写到数据库,期间要用for update语句将要插入的行锁住 String sql1="INSERT INTO SSDATAFILE(SSDATAFILEID,STRFILENAME,STRTIMETICKS,BLOBFILE)VALUES(?,?,?,EMPTY_BLOB())"; //for update语句将刚刚插入的行锁住 String sql2="select BLOBFILE from SSDATAFILE where SSDATAFILEID=? for update"; OutputStream outStream = null; InputStream inStream = null; dbEngine.beginTrans(); dbEngine.update(sql1,datafileid,filename,timetick); oracle.sql.BLOB blob=(oracle.sql.BLOB)dbEngine.querySimple(sql2,datafileid); //使用BLOB对象的getBinaryOutputStream()创建输出流对象 outStream = blob.getBinaryOutputStream(); //使用传进来的Flie对象创建输入流对象 inStream = new FileInputStream(file); //创建缓存 byte[] buff = new byte[(int)file.length()]; //循环读取数据并把数据写入输出流中 try{ while(inStream.read(buff)!=-1){ outStream.write(buff); } }catch (Exception e){ e.printStackTrace(); } finally { outStream.flush(); outStream.close(); inStream.close(); } dbEngine.commit(); }
oracle blob 添加数据类型,学习操作oracle.sql.Blob数据类型,向数据库插入Blob数据类型的数据...
最新推荐文章于 2024-03-07 10:00:17 发布