java将字符串存入oracle的Blob中
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中的更多相关文章
- java将字符串存入GridF并通过id或文件名查询
import static org.bson.codecs.configuration.CodecRegistries.fromProviders; import static org.bson.co ...
- java如何把文件转化成oracle的blob
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO ...
- Java Map 集合类在selenium自动化测试设计中的应用
我们在设计自动化测试用例的时候,往往很多工作是在处理测试的数据. 测试数据无论用Excel 文件, XML文件或者任何一种形式测存储方式,都会设计到参数化以及我们对数据的操作. 这个时候,我们会用到以 ...
- java操作oracle的blob,clob数据
一.区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列 LONG RAW: 可变长二进制数据,最长2G CLOB: ...
- MySql、Oracle、MSSQL中的字符串的拼接
字符串的拼接 1,Mysql 在Java.C#等编程语言中字符串的拼接可以通过加号“+”来实现,比如:"1"+"3"."a"+"b ...
- Java 求字符串中出现频率最高字符
前段时间接触的这个题目,大体理解了,还有些小地方仍待进一步品味,暂且记下. import java.util.ArrayList; import java.util.Arrays; import ja ...
- Oracle和Mysql中的字符串的拼接
SQL允许两个或者多个字段之间进行计算,字符串类型的字段也不例外.比如我们需要 以"工号+姓名"的方式在报表中显示一个员工的信息,那么就需要把工号和姓名两个字符 串类型的字段拼接计 ...
- java截取字符串中的数字
java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...
- 三种java 去掉字符串中的重复字符函数
三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...
随机推荐
- git 工作区管理
git工作区 git的工作区就是电脑中能看到的目录,比如我的learning文件夹就是一个工作区 版本库暂存区 工作去有一个隐藏的目录.git,这个不算工作区,而是git的版本库 git的版本库中存了 ...
- Linux c codeblock的使用(一):新建一个工程
(1)点击New->Project,出现如下图所示,然后再选择Console application,点击Go (2)点击Next (3)根据自己的需求选择特定的语言(前提是你的系统上有这个语言 ...
- Rsync数据同步服务
Rsync数据同步服务 Rsync软件适用与unix/linux/windows等多种操作系统平台 Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,可以实 ...
- awk shell
作业一:整理博客,内容包含awk.变量.运算符.if多分支 awk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...
- 蓝图Blueprint
---恢复内容开始--- 蓝图: flask模块化处理操作和URL的方式 作用: 将不同的功能模块化,实现模块化应用 构建大型应用 优化项目结构 使用步骤 创建蓝图对象 对蓝图对象进行操作(注册路由; ...
- 代码规范mark一下
转自于:https://github.com/zh-google-styleguide/zh-google-styleguide/blob/master/google-python-styleguid ...
- 简单的Java ee思维导图
- 005dayPython学习:编写并执行Pythong代码和流程梳理
一.创建 python 文件 PS:文件路径和文件名尽量不要包含中文! 二.编写python代码 1.头部的特殊两行 #!/usr/bin/env python # -*- coding:utf-8 ...
- jmeter如何进行MQTT性能测试(测试前期准备二,MQTT插件及协议了解)
jmeter插件下载地址及使用,已经有大佬总结好了 大佬的博客地址: https://blog.csdn.net/yellowanwu/article/details/50889677 添加线程组:添 ...
- SoapUI--the use of Script Library
SoapUI--the use of Script Library 有两种方法在soapUI中引用自己的groovy脚本库. 方法一:把自己的script folder放到soapUI install ...