//ps.setClob(index, createClob(con,ojb)
/**
* 创建BLOB
* @param conn 数据库链接
* @param o 数据对象
* @return BLOB
* @throws Exception
*/
@SuppressWarnings("deprecation")
private BLOB createBlob(Connection conn,Object o) throws Exception{
BLOB blob=BLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);
if(o instanceof byte[]){
blob.putBytes(1, (byte[])o);
}else if(o instanceof InputStream){
blob.open(BLOB.MODE_READWRITE);
OracleBlobOutputStream os=(OracleBlobOutputStream) blob.getBinaryOutputStream();
InputStream is=(InputStream)o;
byte[] b = new byte[1024];
int read=0;
while ((read=is.read(b))!=-1) {
os.write(b,0,read);
}
os.flush();
os.close();
os=null;
is.close();
is=null;
}else if(o instanceof File){
blob.open(BLOB.MODE_READWRITE);
OracleBlobOutputStream os=(OracleBlobOutputStream) blob.getBinaryOutputStream();
File file=(File)o;
InputStream is=new FileInputStream(file);
byte[] b = new byte[1024];
int read=0;
while ((read=is.read(b))!=-1) {
os.write(b,0,read);
}
os.flush();
os.close();
os=null;
is.close();
is=null;
}else{//数据类型不符
throw new Exception("Exception BLOB Object type not!");
}
return blob;
}
/**
* 创建CLOB
* @param conn 数据库链接
* @param o 数据对象
* @return CLOB
* @throws Exception
*/
@SuppressWarnings("deprecation")
private CLOB createClob(Connection conn,Object o) throws Exception{
CLOB clob=CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);
if(o instanceof String){
clob.putString(1, (String)o);
}else if(o instanceof char[]){
clob.putChars(1, (char[])o);
}else if(o instanceof Reader){
clob.open(CLOB.MODE_READWRITE);
oracle.jdbc.driver.OracleClobWriter writer=(OracleClobWriter) clob.getCharacterOutputStream();
Reader reader=(Reader)o;
char[] c = new char[1024];
int read=0;
while ((read=reader.read(c))!=-1) {
writer.write(c,0,read);
}
writer.flush();
writer.close();
}else{//数据类型不符
throw new Exception("Exception CLOB Object type not!");
}
return clob;
}