Oracle一条SQL插入Blob类型数据_JAVA

标签: java oracle blob
25人阅读 评论(0) 收藏 举报

网上查询的往oracle插入blob数据大多都是需要先insert一个空对象,然后再select出来,获取blob对象之后在往里面写数据,这样就涉及到两条sql语句的执行和事务。
经过一段时间的搜索找到一种方式可以和普通字段一样直接插入blob类型数据,废话不多说直接上代码。

Connection conn = null;
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String userName = "yuanyuan";// 登陆名
String password = "yuanyuan";// 密码
try {
    //加载驱动
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //创建数据库连接
    conn = DriverManager.getConnection(url, userName, password);
    String sql = "insert into test(testblob,blob2) values(?,?)";
    PreparedStatement pres = conn.prepareStatement(sql);
    //往数据库创建一个临时Blob
    Blob blob = oracle.sql.BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
    //往临时Blob写入数据
    OutputStream os = blob.setBinaryStream(1L);  
    os.write(readToByte(new File("D:\\1.jpg")));
    os.flush();
    //设置参数执行sql
    pres.setBlob(1, blob);
    pres.setBlob(2, blob);
    pres.executeUpdate();
} catch (Exception e) {
    e.printStackTrace();
}

经过测试,这种方式对于update也是一样适用的,核心在于创建这个Blob对象,就是调用oracle驱动的Blob类来创建一个Blob对象,只要创建出来这个对象,那就和我们操作普通的字段一样了。
后来又研究了一下,发现其实很很很很很很很很很很简单,直接插入了一个流就可以啦,唉搞了好久,怪就怪自己没看JAVA API!!!!但是注意了,这样操作,每个流只能用一次,因为流只能读一次,除非重置,所以如果只有一个流可以先读出来包装一下,再复用。

String sql = "insert into test(testblob,blob2) values(?,?)";
PreparedStatement pres = conn.prepareStatement(sql);
//创建两个流
ByteArrayInputStream in = new ByteArrayInputStream(readToByte(new File("D:\\1.jpg")));
InputStream in2 = new FileInputStream("D:\\1.jpg");
//直接setBlob完工
pres.setBlob(1, in);
pres.setBlob(2, in2);
pres.executeUpdate();
查看评论

对oracle的blob字段的操作(插入,更新,删除)

CREATE TABLE txjblob(x NUMBER(5) NOT NULL,b BLOB DEFAULT EMPTY_BLOB() NOT NULL)插入:   stmt.executeUpd...
  • enjsky
  • enjsky
  • 2005-06-24 09:10:00
  • 10379

向oracle表的BLOB字段插入图片的方法

package jdbc.day01; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFou...
  • tanzugan
  • tanzugan
  • 2017-06-12 21:23:04
  • 735

Oracle数据库中插入图片BLOB字段的方法

1./opt/pic/目录下存放图片文件  2.先创建表,存储图片的字段为BLOB类型,创建表可以用sql也可以用navicat等工具,先插入数据填入其他字段,BLOB为null不填   CREA...
  • sunny05296
  • sunny05296
  • 2017-07-12 19:06:02
  • 397

关于 向Mysql 插入 Blob字段 转

   testblob.jsp  test blob
  • jjjjyyyyy
  • jjjjyyyyy
  • 2007-07-12 09:57:00
  • 1613

Oracle blob字段的插入和更新

blob字段,其实是用来存储二进制类型的数据的,比如:大文本、文件、图片等信息直接存放到数据库中的一种解决方案  所以,如果对于新插入的记录,存在blob类型的字段,需要在blob字段中先使用EMP...
  • Burongwawa520
  • Burongwawa520
  • 2015-07-27 13:58:43
  • 4041

oracle 往blob字段导入文件

首先要往BLOB字段插入一个空值, INSERT INTO FILE_DATA (FILE_ID, FILE) VALUES ('10000000000007', EMPTY_BLOB()) 然后...
  • indieinside
  • indieinside
  • 2014-09-16 12:14:56
  • 1662

向orcale数据库中<em>插入blob</em>类型的数据,<em>插入</em>一张图片的示例

向orcale数据库中<em>插入blob</em>类型的数据,<em>插入</em>一张图片的示例,由于本人在完成时遇到了很多问题,最终解决了,于是整理下来,方便学习交流
  • 2018年04月20日 00:00

java oracle blob字段的插入

/* 插入BLOB对象 */ public static String reqInfo(String qry,String cxfaid,String fwfid,String pf,String ...
  • qin_zhimou
  • qin_zhimou
  • 2014-08-06 16:35:49
  • 1681

插入图片/文本(blob /clob)到oracle数据库

reference: http://www.weste.net/2004/11-3/12250047377.html我们在写OA的时候经常遇到的问题就是员工图片档案的储存问题,解决这个问题有两个方法,...
  • sylmoon
  • sylmoon
  • 2005-02-28 20:00:00
  • 4813
    个人资料
    等级:
    访问量: 3774
    积分: 113
    排名: 122万+
    文章分类
    文章存档