Blob内存放的是字节数组,需使用String的getBytes获得该字符串的字节数组(注意字符集编码),然后存入Blob。

Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据。写入Blob字段和写入其它类型字段的方式非常不同,不能直接像插入其他普通类型数据一样插入Blob字段数据,因为Blob相当于一个大文件块,里面有游标cursor,你必须使用cursor对Blob进行操作,因而你在写入Blob之前,必须获得cursor。

具体操作步骤是,先插入一个empty的Blob,这将创建一个Blob的cursor,然后你再把这个empty的Blob的cursor用select查询出来,这样通过两步操作,你就获得了Blob的cursor,可以真正地写入Blob数据了。

public static void instertStringIntoBlob(String str) {
try {
//获得字符串的字节数组
byte[] value = null;
value = str.getBytes();
//数据库连接
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String username = "scott";
String password = "scott";
Connection con = DriverManager.getConnection(url, username, password);
con.setAutoCommit(false);
//插入空Blob,创建cursor
String sql1 = "insert into test(id,content) values('999',empty_blob())";
Statement statement = con.createStatement();
statement.execute(sql1);
//select获得cursor,并写入数据
String sql2 = "select content from test where id=999 for update";
PreparedStatement stmt = con.prepareStatement(sql2);
ResultSet rs = stmt.executeQuery();
OutputStream outStream = null;
if (rs.next()) {
BLOB blob = (BLOB) rs.getBlob(1);
outStream = blob.getBinaryOutputStream();
outStream.write(value, 0, value.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
} catch (Exception e) {
}
}

java将字符串存入oracle的Blob中的更多相关文章

  1. java将字符串存入GridF并通过id或文件名查询

    import static org.bson.codecs.configuration.CodecRegistries.fromProviders; import static org.bson.co ...

  2. java如何把文件转化成oracle的blob

    import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO ...

  3. Java Map 集合类在selenium自动化测试设计中的应用

    我们在设计自动化测试用例的时候,往往很多工作是在处理测试的数据. 测试数据无论用Excel 文件, XML文件或者任何一种形式测存储方式,都会设计到参数化以及我们对数据的操作. 这个时候,我们会用到以 ...

  4. java操作oracle的blob,clob数据

    一.区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列 LONG RAW: 可变长二进制数据,最长2G CLOB:  ...

  5. MySql、Oracle、MSSQL中的字符串的拼接

    字符串的拼接 1,Mysql 在Java.C#等编程语言中字符串的拼接可以通过加号“+”来实现,比如:"1"+"3"."a"+"b ...

  6. Java 求字符串中出现频率最高字符

    前段时间接触的这个题目,大体理解了,还有些小地方仍待进一步品味,暂且记下. import java.util.ArrayList; import java.util.Arrays; import ja ...

  7. Oracle和Mysql中的字符串的拼接

    SQL允许两个或者多个字段之间进行计算,字符串类型的字段也不例外.比如我们需要 以"工号+姓名"的方式在报表中显示一个员工的信息,那么就需要把工号和姓名两个字符 串类型的字段拼接计 ...

  8. java截取字符串中的数字

    java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...

  9. 三种java 去掉字符串中的重复字符函数

    三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...

随机推荐

  1. 开发企业微信打卡API笔记

    获取企业微信打开API上面的数据 根据企业ID和打卡模块的secret获取access_token 打卡传参body为json格式的字符传 创建打卡对象把参数写入,useridlist为list格式. ...

  2. websocket session共享

    单机运行 用户a通过服务器进入房间room,用户b也通过房间进入room,用户之间是通过session来通话的,所以session直接存储在集合中就可以了. 因为session存储在一台服务器的集合中 ...

  3. elasticsearch kabana中创建索引

    在kabana中创建索引和索引类型语法 PUT clockin{ "mappings": { "time": { } }} 查询索引下的所有数据 GET clo ...

  4. 使用Spark进行搜狗日志分析实例——map join的使用

    map join相对reduce join来说,可以减少在shuff阶段的网络传输,从而提高效率,所以大表与小表关联时,尽量将小表数据先用广播变量导入内存,后面各个executor都可以直接使用 pa ...

  5. redisi应用--布隆过滤器

    但是如果我们想知道某一个值是不是已经在 HyperLogLog 结构里面了,它就无能为力了,它只提供了 pfadd 和 pfcount 方法,没有提供 pfcontains 这种方法.

  6. 介绍一下Spring Cloud Config

    Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring ...

  7. easyui datagrid 后台分页,前端如何处理

    module.exports = { queryMethod(){ let params = checkQueryParams.call(this); if (!params) { return; } ...

  8. docker学习---第一章节

    一.docker的应用场景有哪些 Web 应用的自动化打包和发布 自动化测试和持续集成.发布 在服务型环境中部署和调整数据库或其他的后台应用 从头编译或者扩展现有的OpenShift或Cloud Fo ...

  9. LNMP(三)

    第二十二次课 LNMP(三) 目录 一.Nginx负载均衡 二.ssl原理 三.生成ssl密钥对 四.Nginx配置ssl 五.php-fpm的pool 六.php-fpm慢执行日志 七.open_b ...

  10. asp类型转换函数汇总 转贴

    abs(number) 返回绝对值. array(arglist) 创建一个数组. asc(string) 返回字符串第一个字符的ansi码. atn(number) 返回反正弦值. cbool (e ...