日期:2014-05-18  浏览次数:20873 次

如何将图片和文字存入oracle 数据库,并且显示
一个文本编辑器,图片可能是互联网上的,也有可能是本地计算机的,如何将其存到oracle数据库,存入后如何显示,文本和图片同时存入。

------解决方案--------------------
文件大的话就存路径,文件小的话可先转换成二进制再存
------解决方案--------------------
类型为:Blob,clob
------解决方案--------------------
(1)向 blob 字段写入值
String medpk = dao.getElementPK(cn, vo);
evo.setEle_elementId(medpk);
evo.setEle_contentid(conpk);
evo.setEle_type( "23 ");
dao.addElementRelation(cn, evo);
evo.setMmsnews_elementID(medpk);
//Connection conn=JdbcConnectionPool.getConnection();
try {
String sql =
"insert into OM_CM_MMSNEWS (elementid,title,content) values(?,?,empty_blob()) "; //1.blob字段插入空值
PreparedStatement ps = cn.prepareStatement(sql);
ps.setString(1, evo.getEle_elementId());
ps.setString(2, evo.getMmsnews_title());
ps.execute();
sql =
"select content from OM_CM_MMSNEWS where elementid= " + medpk + " for update "; //2.更新指定记录的 blob字段
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sql);
File file = new File(evo.getMmsnews_content());
if (rs.next()) {
OracleThinBlob blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs.getBlob(1);
//必须用weblogic 的jar包
OutputStream outStream = blob. getBinaryOutputStream();
InputStream fin = new FileInputStream(file);
byte[] b = new byte[blob.getBufferSize()];
int len = 0;
while ((len = fin.read(b)) != -1) {
outStream.write(b, 0, len);
}
fin.close();
outStream.flush();
outStream.close();
}
rs.close();
st.close();
logger.error( "this MmsNews is save! ");
} catch (Exception ex) {
logger.error(ex.getMessage());
throw new Exception(ex.getMessage());
}


(2)提取blob字段的值,并保存为文件
private static void getZipFile(String contentid, String filepath,
String zipfile) throws
DOException {

String sql = "select content from om_cm_mmsnews a where a.elementid in (select b.elementid from om_cm_elementrelation b where b.contentid in (select c.contentid from om_cm_content c where c.contentid=?)) ";
Connection conn = null;
try {
//建立文件夹
File tempDicFile = new java.io.File(filepath);
tempDicFile.mkdirs();

//提取 blob 字段的内容并保存为