博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理BLOB
阅读量:6272 次
发布时间:2019-06-22

本文共 2201 字,大约阅读时间需要 7 分钟。

处理BLOB

oracle LOB

LOB(Large Objects大对象),用来存储大量的二进制和文本数据的一种数据类型

内部LOB

    BLOB(二进制数据)

    CLOB(单字节字母数据)

    NCLOB(多字节字符数据)

外部LOB

插入BLOB类型的数据必须使用PreparedStatement。

因为BLOB类型的数据时无法使用字符串拼写的。

 

调用setBlob(int index,InputStream inputStream)

@Test    public void test4(){        Connection conn = null;        PreparedStatement preparedStatement = null;        ResultSet resultSet = null;        String sql = "insert into student values(?,?,?,?)";        try {            conn = Methods.getConnection();                      preparedStatement = conn.prepareStatement(sql);            preparedStatement.setObject(1,"5");            preparedStatement.setString(2,"yang5");            preparedStatement.setString(3,"1235");            InputStream inputStream = new FileInputStream("boy.png");            preparedStatement.setBlob(4,inputStream);            preparedStatement.executeUpdate();         inputStream.close();        } catch (Exception e) {            e.printStackTrace();        } finally {            Methods.release(preparedStatement,conn,resultSet);        }    }

  

 

读取blob数据:

1.使用getBlob方法读取Blob对象

2.调用Blob的getBinaryStream()方法得到输入流,在使用IO操作即可。

@Test    public void test5(){        Connection conn = null;        PreparedStatement preparedStatement = null;        ResultSet resultSet = null;        String sql = "select picture from student where id =5";        try {            conn = Methods.getConnection();            preparedStatement = conn.prepareStatement(sql);            resultSet = preparedStatement.executeQuery();            if(resultSet.next()){                Blob picture = resultSet.getBlob(1);                InputStream in = picture.getBinaryStream();                OutputStream os = new FileOutputStream("boy1.png");                byte[] buffer = new byte[1024];                int len = 0;                while((len= in.read(buffer))!=-1){                    os.write(buffer,0,len);                }                os.close();                in.close();            }        } catch (Exception e) {            e.printStackTrace();        } finally {            Methods.release(preparedStatement,conn,resultSet);        }    }

  

转载于:https://www.cnblogs.com/yangHS/p/10832890.html

你可能感兴趣的文章
[javase学习笔记]-8.3 statickeyword使用的注意细节
查看>>
Spring集成RabbitMQ-使用RabbitMQ更方便
查看>>
Nginx 设置域名转向配置
查看>>
.net core 实现简单爬虫—抓取博客园的博文列表
查看>>
FP-Tree算法的实现
查看>>
Android 用Handler和Message实现计时效果及其中一些疑问
查看>>
Dos命令删除添加新服务
查看>>
C#.NET常见问题(FAQ)-索引器indexer有什么用
查看>>
hadoop YARN配置参数剖析—MapReduce相关参数
查看>>
Java 正则表达式详细使用
查看>>
【ADO.NET】SqlBulkCopy批量添加DataTable
查看>>
SqlServer--bat批处理执行sql语句1-osql
查看>>
Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
查看>>
laravel安装初体验
查看>>
用yum查询想安装的软件
查看>>
TIJ -- 吐司BlockingQueue
查看>>
数据库分页查询
查看>>
[编程] C语言枚举类型(Enum)
查看>>
[Javascript] Compose multiple functions for new behavior in JavaScript
查看>>
ASP.NET MVC性能优化(实际项目中)
查看>>