注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接:

package b_blob_clob;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import util.JdbcUtil; /**
*
* JDBC处理大容量数据:
*
* 字符:
* oracle:char、varchar2
* 存储字符内容:mysql:char、varchar长度有限。65335
* 大容量的字符字段:
* mysql:text、longtext(4G的文本)
* oracle:clob、longclob
* JDBC中操作大文本的方法等命名也是参照oracle中的clob进行命名的
*
* 字节:
* mysql:blob(65KB) mediumbolb(16MB) longblob(4GB)
* oracle:同上
*
* 注意:mysql默认设置最大上传数据包为1MB大小,所以要到安装目录下:
* 找到my.ini配置文件:添加一个变量max_allowed_packet=50M即可!
*
*
* @author mzy
*
*/
public class Demo01 {
/**
* 关于CLOB:大文本
*/ public static void main(String[] args) {
// write(); read();
} private static void read() {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null; try {
conn = JdbcUtil.getConnection();
String sql = "select * from news where id=?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, 1);
rs = stmt.executeQuery();
// 1. 直接用getString读;
while(rs.next()) {
String content = rs.getString("content");
System.out.println(content);
} stmt.setInt(1, 2); rs = stmt.executeQuery();
while(rs.next()) {
Clob clob = rs.getClob("content");
Reader reader = clob.getCharacterStream(); // 2. 用流的方式输出到文件中
FileWriter writer = new FileWriter("e:/test.txt");
char[] buf = new char[512];
int len = 0;
while((len=reader.read(buf)) != -1) {
writer.write(buf, 0, len);
} reader.close();
writer.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } private static void write() {
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = JdbcUtil.getConnection();
String sql = "insert into news(title, content) values(?, ?)";
stmt = conn.prepareStatement(sql);
// 直接用setString
stmt.setString(1, "标题一");
stmt.setString(2, "假装是很长很长的文本!");
// 执行
stmt.executeUpdate(); // 传入一个reader流对象;
Reader reader = new FileReader("./src/LongText.txt");
stmt.setString(1, "标题二");
// 设置text字段:直接传入流对象
stmt.setClob(2, reader);
// 执行
stmt.executeUpdate(); System.out.println("添加成功!");
} catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(stmt, conn);
}
}
}

JDBC中级篇(MYSQL)——处理大文本(CLOB)的更多相关文章

  1. oracle存储大文本clob、blob

    oracle存储大文本clob.blob 1 package cn.itcast.web.oracle.util; 2 3 import java.sql.Connection; 4 import j ...

  2. JDBC:数据库操作:处理大对象CLOB数据

    目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...

  3. mysql 的大文本存储TEXT & BLOB

    TEXT & BLOB 一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR:而在保存较大文本时,通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能 ...

  4. JDBC中级篇(MYSQL)——处理文件(BLOB)

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

  5. JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package c_increment; import java.sql.Connection; import java.sql.P ...

  6. JDBC中级篇(MYSQL)——模拟从数据库中上传下载附件

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

  7. JDBC 复习3 存取Oracle大数据 clob blob

    1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...

  8. JDBC中级篇——批处理和PreparedStatement对有sql缓冲区的数据库的友好,测试

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package a_batch; import util.JdbcUtil; import java.sql.Connection; ...

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

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

随机推荐

  1. ArcGis Server安装与使用

    ArcGis Server安装 下载ArcGisServer 双击Setup.exe,然后一直下一步. 安装完成后,点击完成,弹出如下界面: 选择第三个选项,然选择[.ecp]后缀名的授权文件. 然后 ...

  2. GraphQL 概念入门

    GraphQL 概念入门 Restful is Great! But GraphQL is Better. -- My Humble Opinion. GraphQL will do to REST ...

  3. C++第五十篇 -- 获取串口的描述信息

    如何知道自己的电脑上有无串口呢? -- 手动 1. 查看电脑,看是否有串口器件(串口是一个九针的D型接口) 2. 在设备管理器上查看 乍一看,还以为是有两个串口,其实仔细看描述就知道,这是蓝牙虚拟串口 ...

  4. 搭建MySQL主从实现Django读写分离

    一.MySQL主从搭建 主从配置原理: 主库写日志到 BinLog 从库开个 IO 线程读取主库的 BinLog 日志,并写入 RelayLog 再开一个 SQL 线程,读 RelayLog 日志,回 ...

  5. Vue--el-menu 的自动跳转功能与自己的click事件冲突

    一\先看elementUI说明 项目实际 此时点击活导航时以 index 作为 path 进行路由跳转 那么此时不要onclik事件了 如果此时有在有click 就

  6. IDEA web项目小坑

    1.明明依赖包都加进来了,为什么运行起来报java.lang.ClassNotFoundException? 依赖包的路径只能为{project}web/WEB-INF/lib,如果将lib改为lib ...

  7. Java 在线/离线 文档

    英文: Oracle 官网在线文档 Java SE 8 Oracle 官网在线文档 Java SE 9 & JDK 9 中文: Java 1.8: 中文 – 谷歌版 中文 – 有道版 中文 – ...

  8. DC-4靶机

    仅供个人娱乐 靶机信息 下载地址:http://www.five86.com/downloads/DC-4.zip 一.主机扫描 arp-scan -l nmap -p 1-65535 -A -sV ...

  9. 移植TensorFlow到Windows平台

    2015年11月,Google宣布开源旗下机器学习工具TensorFlow,引发业界热潮.TensorFlow原生支持*unix系和安卓平台,但并不提供对Windows平台的支持.如果想在Window ...

  10. python,ctf笔记随笔

    一.在centos虚拟机中安装pyhton3环境: 安装pip3:yum install python36-pip 将pip升级到最新版本:pip3 install --upgrade pip 运行p ...