JDBC中级篇(MYSQL)——处理大文本(CLOB)
注意:其中的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)的更多相关文章
- oracle存储大文本clob、blob
oracle存储大文本clob.blob 1 package cn.itcast.web.oracle.util; 2 3 import java.sql.Connection; 4 import j ...
- JDBC:数据库操作:处理大对象CLOB数据
目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...
- mysql 的大文本存储TEXT & BLOB
TEXT & BLOB 一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR:而在保存较大文本时,通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能 ...
- JDBC中级篇(MYSQL)——处理文件(BLOB)
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileInputStream; import java.i ...
- JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package c_increment; import java.sql.Connection; import java.sql.P ...
- JDBC中级篇(MYSQL)——模拟从数据库中上传下载附件
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.BufferedOutputStream; import j ...
- JDBC 复习3 存取Oracle大数据 clob blob
1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...
- JDBC中级篇——批处理和PreparedStatement对有sql缓冲区的数据库的友好,测试
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package a_batch; import util.JdbcUtil; import java.sql.Connection; ...
- 利用JDBC处理mysql大数据--大文本和二进制文件等
转载自http://www.cnblogs.com/xdp-gacl/p/3982581.html 一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob, ...
随机推荐
- CF404D-DP【成就达成】
CF404D-DP 正经的东西 题意 给定一个字符串,只包含'0','1','2','*','?'五种字符,其中'?'可被替换为其他任何一种,求使序列符合扫雷地图定义的方案数. 一个数字字符大小表示与 ...
- nmcli命令行修改网络连接名称
目前在网上能找到的文章中,使用nmcli命令修改Linux系统中网卡连接的名称都是先创建新的连接,然后删除旧的连接的方式 此种方式其实完全不恰当,简直就是在浪费时间,nmcli命令本身就提供了直接修改 ...
- SSM和Maven整合
项目架构如图 applicationContext.xml还有其他文件一起放进resources下 jsp,js,等文件放在webapp下
- Python自动化测试面试题-MySQL篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- 1.2MATLAB数值数据
1.2MATLAB数值数据 数值数据类型的分类 整型 浮点型 复数型 1. 整型 无符号整数(uint) 无符号8位整数 0000 0000 - 1111 1111 (0 ~ 28-1[256]) 无 ...
- 构建后端第2篇之---springb @ComponentScan注解使用
张艳涛写于2021-2-8日 构建后端项目的时候遇到一个问题,在zyt-auth项目的依赖定义了@Component类,这个类在项目启动的时候提示没有找到bean Field tokenService ...
- JAVA,IDEA下的包机制
IDEA下的包机制 在实际开发中,大型系统往往需要多人合作完成,每个程序员都要命名多个类与接口等类型,难免会定义重复的类与接口.为了避免名字冲突,java提供了包机制只要包名不同,即使类名相同,也能相 ...
- 探索HashMap源码 一行一行解析 jdk1.7版本
今天我们来说一说,HashMap的源码到底是个什么? 面试大厂这方面一定会经常问到,很重要的.以jdk1.7 为标准 先带着大家过一遍 是由数组.链表组成 , 数组的优点是:每个元素有对应下标, ...
- OpenFaaS实战之九:终篇,自制模板(springboot+maven+jdk8)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 我们是Android开发,我们都有着光明的未来
作为一名程序员经常会逛v2ex论坛,前几天逛着玩的时候忽然发现一篇文章,标题非常吸引眼球名字叫中年危机的终极解法,作为一个步入而立之年的老人,心里非常激动,到底是啥解决法呢,于是迅速点进去查看. 进去 ...