关于oracle中blob字段的录入问题

来源:互联网 发布:c语言比大小函数 编辑:程序博客网 时间:2024/05/01 20:56

在oracle中,有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob。
  下面是对lob数据类型的简单介绍。
   blob:二进制lob,为二进制数据,最长可达4GB,存贮在数据库中。
   clob:字符lob,字符数据,最长可以达到4GB,存贮在数据库中。
   bfile:二进制文件;存贮在数据库之外的只读型二进制数据,最大长度由操作系统限制。
   nclob:支持对字节字符集合(nultibyte characterset)的一个clob列。
   对于在其他不同的开发环境,例如vc,vb,pb,java等环境下对lob的处理,处理方法不尽相同,在这里将举用jdbc处理lob的例子
  String strSQL = "Insert Into BKS_XSZPXX(XH,ZPLXM,ZP) Values('3071801040','1',empty_blob())";
  updateTable1(strSQL,conn);
  conn.setAutoCommit(false);
  strSQL = "Select ZP from BKS_XSZPXX where XH='3071801040' For Update";
  
  Statement stmt = null;
  ResultSet rs = null;
  stmt = conn.createStatement();
  rs = stmt.executeQuery(strSQL);

  rs.next();
  BLOB blob = (BLOB) rs.getBlob("ZP");
  OutputStream os = blob.getBinaryOutputStream();// 建立输出流
  BufferedOutputStream output = new BufferedOutputStream(os);
  BufferedInputStream input = new BufferedInputStream(new File("F:/3071801040.jpg").toURL().openStream());
  byte[] buff = new byte[2048000];  //用做文件写入的缓冲
  int bytesRead;
  while(-1 != (bytesRead = input.read(buff, 0, buff.length)))
  {
     output.write(buff, 0, bytesRead);
     //System.out.println(bytesRead);
  }

  output.close();
  input.close();
  rs.close();
  conn.commit();
  conn.setAutoCommit(true);
  stmt.close();
  

原创粉丝点击