學習操作oracle.sql.Blob數據類型,向數據庫插入Blob數據類型的數據
/**
* @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();
}
* @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();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.