LOB (Large Objects)   分为:CLOBBLOB,即大文本和大二进制数据

CLOB:用于存储大文本

BLOB:用于存储二进制数据,例如图像、声音、二进制文件

在mysql中,只有BLOB,没有CLOB,mysql存储大文本用TEXT

TEXT  分为:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT

BLOB 分为:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB

取值范围如下图:

下面来看具体的代码实现:

 package com.cream.ice.jdbc;

 import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import org.junit.Test; /**
* 大文本数据操作
*
* 假设数据库中已存在表test:
* create table test(
* id int primary key,
* content longtext
* );
*
* @author ice
*
*/
public class ClobDemo { Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet=null; @Test
public void add(){
try {
connection=JdbcUtils.getConnection();
statement=connection.prepareStatement("insert into test (id,content) values (?,?)");
statement.setInt(1, 1); //大文本要使用流的形式。将d:/test.txt内容添加至该记录的content字段
File file = new File("d:/test.txt");
Reader reader = new FileReader(file);
//不能使用long的参数,因为mysql根本支持不到那么大的数据,所以没有实现
statement.setCharacterStream(2, reader, (int)file.length()); int i = statement.executeUpdate();
if(i>0)
System.out.println("插入成功"); } catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally{
JdbcUtils.releaseResources(null, statement, connection);
}
} @Test
public void read(){
try {
connection = JdbcUtils.getConnection();
statement = connection.prepareStatement("select * from test where id=?");
statement.setInt(1, 1); //将读取内容保存到E盘上
resultSet = statement.executeQuery();
while(resultSet.next()){
Reader reader = resultSet.getCharacterStream("content");
Writer writer = new FileWriter("e:/test.txt");
char buffer[] = new char[1024];
int len = -1;
while((len=reader.read(buffer))!=-1){
writer.write(buffer, 0, len);
}
reader.close();
writer.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally{
JdbcUtils.releaseResources(resultSet, statement, connection);
}
}
}
 package com.cream.ice.jdbc;

 import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import org.junit.Test; /**
* 大二进制数据操作
*
* 假设数据库中已存在表test:
* create table test(
* id int primary key,
* content longblob
* );
*
* @author ice
*
*/
public class BlobDemo {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet=null; @Test
public void add(){
try {
connection=JdbcUtils.getConnection();
statement=connection.prepareStatement("insert into test (id,content) values (?,?)");
statement.setInt(1, 1); InputStream in = new FileInputStream("d:/test.jpg");
statement.setBinaryStream(2, in, in.available()); int i = statement.executeUpdate();
if(i>0)
System.out.println("插入成功"); } catch (Exception e) {
e.printStackTrace();
} finally{
JdbcUtils.releaseResources(null, statement, connection);
}
} @Test
public void read(){
try {
connection = JdbcUtils.getConnection();
statement = connection.prepareStatement("select * from test where id=?");
statement.setInt(1, 1); //保存到E盘上
resultSet = statement.executeQuery();
while(resultSet.next()){
InputStream in = resultSet.getBinaryStream("content");
OutputStream out = new FileOutputStream("e:/test.jpg");
byte b[] = new byte[1024];
int len = -1;
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
out.close();
in.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally{
JdbcUtils.releaseResources(resultSet, statement, connection);
}
}
}

这里使用了我上一篇jdbc基础中的JdbcUtils工具类,同时也使用了单元测试来测试两个成员方法,代码已亲测可运行。

csdn博文地址:jdbc基础 (三)  大文本、二进制数据处理

jdbc基础 (三) 大文本、二进制数据处理的更多相关文章

  1. 使用JDBC处理MySQL大文本和大数据

    LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB.BLOB通常用于存储二进制数据,比如图片.音频.视频等.CLOB通常用于存储大文本,比如小说. ...

  2. JDBC中级篇(MYSQL)——处理大文本(CLOB)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileNotFoundException; import ...

  3. JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  4. JavaWeb(三十五)——使用JDBC处理Oracle大数据

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  5. 利用JDBC处理mysql大数据--大文本和二进制文件等

    转载自http://www.cnblogs.com/xdp-gacl/p/3982581.html 一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob, ...

  6. javaweb学习总结(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  7. javaweb(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  8. 三.使用JDBC处理MySql大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  9. 使用jdbc存储图片和大文本

    package cn.itcast.i_batch; import java.sql.Connection; import java.sql.PreparedStatement; import jav ...

随机推荐

  1. javascript之url转义escape()、encodeURI()和encodeURIComponent()

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...

  2. Java基础の乱弹琴二:break关键字

    Java中的break一般用于 跳出一个switch或者循环. 跳出switch基本不用赘述. break跳出循环一般是跳出当前一层循环. 如若需要跳出多层循环可以在break后加标签,然后把标签标注 ...

  3. Linux shell basic3 dd wc comm chmod ls

    Generating files of any size /dev/zerois a character special device, which infinitely returns the ze ...

  4. 【问题&解决】试用版SQL Server 2008 R2 提示评估期已过,数据库不能访问解决办法

    因为以前一直是试用版,重启服务器之后,突然数据库不能访问,提示评估期已过,都快吓死了.还好找到了解决办法特copy解决步骤如下: (笔者用的是企业版: R88PF-GMCFT-KM2KR-4R7GB- ...

  5. 【Android UI设计与开发】6.底部菜单栏(三)使用Fragment+PopupWindow仿QQ空间最新版底部菜单栏

    直接看栗子吧,效果基本实现,界面微调和弹窗的优化,去做的话会很耗时说,暂时就酱紫了.上传效果动态图太大了,直接手机截图的效果图如下: 至于代码的实现主要就是自定义的菜单栏,和用 PopupWindow ...

  6. 【C#】1.算法温故而知新 - 简单的桶排序

    该算法的时间复杂度是O(M+N),M为桶的个数,N为待排序的个数 缺点: 1.不适用于小数 2.当数值过多,太浪费空间,比如数值范围为0~99999,那需申请100000个变量,也就是要写成a[100 ...

  7. [转]MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验

    本文转自:http://liangweilinux.blog.51cto.com/8340258/1728131 年,嘿,废话不多说,下面开启MySQL优化之旅! 我们究竟应该如何对MySQL数据库进 ...

  8. 边工作边刷题:70天一遍leetcode: day 89-1

    Smallest Rectangle Enclosing Black Pixels 要点:记题:这题有两个限制条件:所有black pixel是连通的(所以可以用binary search)以及给了一 ...

  9. poj 1463 Strategic game DP

    题目地址:http://poj.org/problem?id=1463 题目: Strategic game Time Limit: 2000MS   Memory Limit: 10000K Tot ...

  10. 深入理解maven及应用--转

    (一):生命周期和插件 在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最 ...