Oracle中BLOB和CLOB数据的读写
2012-10-13 20:56
549 查看
1.Blob和Clob
Blob:二进制大对象存储单位,最大可以达到4G,通常用来存储图像、音频等二进制信息。Clob:字符大对象存储单位,最大也是4G,通常用来存储大文本文件。
2.Blob数据的读写
a.Java
读取blob:String sql_blob = "select blobname from table"; ResultSet rs_blob=null; rs_blob = dao.queryForResultSet(sql_blob); byte[] data = null; if (rs_blob.next()) { java.sql.Blob blob = rs_blob.getBlob(blobname); InputStream inStream = blob.getBinaryStream(); try { long nLen = blob.length(); int nSize = (int) nLen; data = new byte[nSize]; inStream.read(data); inStream.close(); } catch (IOException e) { System.out.println("获取图片数据失败,原因:" + e.getMessage()); } }
参考文章
写blob:
/** * 描述: 添加某张表某条记录的content字段,此字段为 blob 型 * param: 表名;主键;数据;数据库连接 * return: 添加成功返回 true ;否则返回 false * */ public static boolean setBlob(String tableName,int ID, String data,Connection conn) { Statement statement = null; ResultSet ret = null; String insertBlob = "select content from " + tableName + " where id = '"+ID+"' for update "; String flushBlob="update "+tableName+" set content=EMPTY_BLOB() where id="+ID; boolean flg = false; try { statement = conn.createStatement(); statement.execute(flushBlob);//首先清空content字段 ret = statement.executeQuery(insertBlob); oracle.sql.BLOB blob = null; if (ret.next()) { blob = ((OracleResultSet) ret).getBLOB(1); } OutputStream outstream = blob.getBinaryOutputStream(); byte[] data1 = data.getBytes(); outstream.write(data1, 0, data1.length);//就是这个地方出了问题,如果是修改,之前就有了长度为100字节的数据,而这次修改只有50字节数据,那么后面50个字节就不会被修改,仍然存在数据库中 outstream.flush(); outstream.close(); flg = true; } catch (SQLException e1) { e1.printStackTrace(); flg = false; } catch (IOException e1) { e1.printStackTrace(); flg = false; } finally { try { if(statement != null) { statement.close(); } if(ret != null) { ret.close(); } }catch(Exception ex) { ex.printStackTrace(); } } return flg; }
参考文章
注:
数据库是Oracle10g版本为10.2.0, 在数据库中
java中通常使用的是通过jdbc驱动来连接数据库,oracle也不例外,因此必须下载一个Oracle驱动的jdbc需要去网上进行下载,名称为 ojdbc14(10g).jar。
a.C#
读取blobconn.Open(); OracleCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from table_withblob"; OracleDataReader odr_rt = cmd.ExecuteReader(); byte[] Photo = (byte[])odr_rt["blobname"];写blob
相关文章推荐
- Hibernate实现Oracle Blob/Clob类型数据读写
- PowerBuilder 读写Oracle CLOB 和BLOB的数据
- oracle 中的大对象数据类型blob、clob、nclob的意义以及区别
- java读写oracle Clob数据
- JDBC复习,oracle的blob,clob的读写
- Ibatis读写CLOB,BLOB数据
- 利用JDBC操作Oracle CLOB和BLOB类型数据
- oracle中导出和导入含有blob,clob字段的表数据
- oracle 中的大对象数据类型blob、clob、nclob的意义以及区别
- java操作oracle的blob,clob数据
- java读写Oracle clob数据
- Ibatis读写CLOB,BLOB数据
- [转载]JDBC读写Oracle的CLOB、BLOB
- C# 读写 Oracle BLOB 数据
- Oracle如何通过Database Link复制远程数据库表的CLOB/BLOB字段数据到本地数据库?
- Oracle 中的大对象数据类型blob、clob、nclob的意义以及区别
- C# 读写 Oracle BLOB 数据
- 关于 Oracle Clob Blob 字段的读写
- VBA读写Oracle的Blob数据
- C# 读写 Oracle BLOB 数据