注意:其中的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. SpringBoot整合Shiro实现权限控制

    目录 1.SpringBoot整合Shiro 1.1.shiro简介 1.2.代码的具体实现 1.2.1.Maven的配置 1.2.2.整合需要实现的类 1.2.3.项目结构 1.2.4.ShiroC ...

  2. PO封装设计模式 -- App移动端测试

    前言: 一.App_Po 封装 (用互联网上随便一个app进行) base 存放的是页面基础类,后续的类需继承基础类 common 存放的是公共部分,测试固件分离部分,新增截图功能部分 Data 存放 ...

  3. 【模拟】报名签到 luogu-4445

    AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) memset(a,b,sizeof(a)) typed ...

  4. pytest框架运用

    import pytest ''' 运行方式 1. pytest -s test01.py 把print信息打印出来运行用例 2. 通过main运行 前置后置方法 1. 函数级 setup teard ...

  5. Wordpress 4.6 任意命令执行漏洞(PwnScriptum)

    漏洞存在后台登录地方的找回密码页面:http://192.168.49.2:8080/wp-login.php?action=lostpassword 抓包进行修改包 输入一个存在的用户,然后点击获取 ...

  6. PHP-FPM 远程代码执行漏洞(CVE-2019-11043)

    影响范围 在 Nginx + PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响,另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码 ...

  7. Jmeter分布式压测实战及踩坑处理(含参数化)

    项目中使用Jmeter进行大并发压测时,单机受限内存.CPU.网络IO,会出现服务器压力还没有上 去,但压测服务器由于模拟的压力太大死机的情况.JMeter的集群模式可以让我们将多台机器联合起来 一起 ...

  8. C++手写内存池

    引言 使用new expression为类的多个实例分配动态内存时,cookie导致内存利用率可能不高,此时我们通过实现类的内存池来降低overhead.从不成熟到巧妙优化的内存池,得益于union的 ...

  9. fiddle手机抓包配置

    第一步:打开Fiddler,配置参数: 1. 配置fiddler允许监听到https 打开Fiddler菜单项Tools->TelerikFiddler Options->HTTPS, 勾 ...

  10. 建立安全SSL连接PostgreSQL数据库服务器

    建立安全SSL连接PostgreSQL数据库服务器当前物联网的挑战之一就是提供最高的安全级别.这就是为什么需要开启SSL连接到 PostgreSQL. 当你想要安全的存储数据到PostgreSQL数据 ...