jdbc java数据库连接 11)中大文本类型的处理
1. Jdbc中大文本类型的处理
Oracle中大文本数据类型,
Clob 长文本类型 (MySQL中不支持,使用的是text)
Blob 二进制类型
MySQL数据库,
Text 长文本类型
Blob 二进制类型
需求: jdbc中操作长文本数据。
设计: 测试表
编码:
保存大文本数据类型
读取大文本数据类型
保存二进制数据
读取二进制数据
MYSQL:
- -- 测试大数据类型
- CREATE TABLE test(
- id INT PRIMARY KEY AUTO_INCREMENT,
- content LONGTEXT,
- img LONGBLOB
- );
java:
- public class App_text {
- // 全局参数
- private Connection con;
- private Statement stmt;
- private PreparedStatement pstmt;
- private ResultSet rs;
- @Test
- // 1. 保存大文本数据类型 ( 写longtext)
- public void testSaveText() {
- String sql = "insert into test(content) values(?)";
- try {
- // 连接
- con = JdbcUtil.getConnection();
- // pstmt 对象
- pstmt = con.prepareStatement(sql);
- // 设置参数
- // 先获取文件路径
- String path = App_text.class.getResource("tips.txt").getPath();
- FileReader reader = new FileReader(new File(path));
- pstmt.setCharacterStream(1, reader);
- // 执行sql
- pstmt.executeUpdate();
- // 关闭
- reader.close();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- JdbcUtil.closeAll(con, pstmt, null);
- }
- }
- @Test
- // 2. 读取大文本数据类型 ( 读longtext)
- public void testGetAsText() {
- String sql = "select * from test;";
- try {
- // 连接
- con = JdbcUtil.getConnection();
- // pstmt 对象
- pstmt = con.prepareStatement(sql);
- // 读取
- rs = pstmt.executeQuery();
- if (rs.next()) {
- // 获取长文本数据, 方式1:
- //Reader r = rs.getCharacterStream("content");
- // 获取长文本数据, 方式2:
- System.out.print(rs.getString("content"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- JdbcUtil.closeAll(con, pstmt, null);
- }
- }
- }
- blob
- public class App_blob {
- // 全局参数
- private Connection con;
- private Statement stmt;
- private PreparedStatement pstmt;
- private ResultSet rs;
- @Test
- // 1. 二进制数据类型 ( 写longblob)
- public void testSaveText() {
- String sql = "insert into test(img) values(?)";
- try {
- // 连接
- con = JdbcUtil.getConnection();
- // pstmt 对象
- pstmt = con.prepareStatement(sql);
- // 获取图片流
- InputStream in = App_text.class.getResourceAsStream("7.jpg");
- pstmt.setBinaryStream(1, in);
- // 执行保存图片
- pstmt.execute();
- // 关闭
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- JdbcUtil.closeAll(con, pstmt, null);
- }
- }
- @Test
- // 2. 读取大文本数据类型 ( 读longblob)
- public void testGetAsText() {
- String sql = "select img from test where id=2;";
- try {
- // 连接
- con = JdbcUtil.getConnection();
- // pstmt 对象
- pstmt = con.prepareStatement(sql);
- // 读取
- rs = pstmt.executeQuery();
- if (rs.next()) {
- // 获取图片流
- InputStream in = rs.getBinaryStream("img");
- // 图片输出流
- FileOutputStream out = new FileOutputStream(new File("c://1.jpg"));
- int len = -1;
- byte b[] = new byte[1024];
- while ((len = in.read(b)) != -1) {
- out.write(b, 0, len);
- }
- // 关闭
- out.close();
- in.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- JdbcUtil.closeAll(con, pstmt, null);
- }
- }
- }
jdbc java数据库连接 11)中大文本类型的处理的更多相关文章
- Jdbc中大文本类型的处理
Oracle中大文本数据类型, Clob 长文本类型 (MySQL中不支持,使用的是text) Blob 二进制类型 MySQL数据库, Text 长文本类型 Blob 二 ...
- jdbc java数据库连接 5)CallableStatement 接口
CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: DELIMITER $ CREATE PROCEDURE pro_findById(IN ...
- jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化
上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 // 创建驱动注册对象 Class. ...
- jdbc:java数据库连接
1.导jar包 四大参数: 1.加载驱动类:Class.forName("com.mysql.jdbc.Driver"); 2.url:jdbc:mysql://localhost ...
- jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件
之前的代码中,以下代码很多时候并不是固定的: private static String url = "jdbc:mysql://localhost:3306/day1029?useUnic ...
- jdbc java数据库连接 2)jdbc接口核心的API
JDBC接口核心的API java.sql.* 和 javax.sql.*(java2.0以后更新的扩展) |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接 ...
- jdbc java数据库连接 1)jdbc入门
之前操作数据 1)通过mysql的客户端工具,登录数据库服务器 (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 什么是jdbc? 使用jav ...
- Java泛型(11):潜在类型机制
泛型的目标之一就是能够编写尽可能广泛应用的代码. 为了实现这一点,我们需要各种途径来放松对我们的代码将要作用的类型所做的限制,同时不丢失静态类型检查的好处.即写出更加泛化的代码. Java泛型看起来是 ...
- jdbc java数据库连接 10)批处理
批处理 很多时候,需要批量执行sql语句! 需求:批量保存信息! 设计: AdminDao Public void save(List<Admin list){ // 目前用这种方式 ...
随机推荐
- PHP的学习--使用phar打包
前段时间写了几个PHP的脚本,但是因为脚本的项目是基于composer安装的,给别人使用的时候不太方便,就希望能够打包成一个能直接使用的文件. 搜索了一下,发现可以使用phar打包. 假设我们有如下一 ...
- C# Excel数据有效性
C# Excel数据有效性 在Excel中,我们可以使用数据有效性功能来定义哪些数据可以被输入到工作表的单元格中,例如,限制输入的数据为一定范围内的数字或使用下拉列表来限制用户可选择的数据等.这篇文章 ...
- Android面试经验 -- 乐视
此次投的是三年经验的Android开发,最后反而因为自己的失误,没有准备充分而导致结果很悲剧,以此告诫自己千万不能疏忽大意. 面试过程 第一次去大公司面试,心里不是一般的激动和紧张,来到乐视大厦门口, ...
- ASP.NET MVC 发送邮件(异步)
最近写邮件发送搞死人了,最后的结果,真是醉了,现整理如下: 网上一搜一大把,到处都是.NET发送邮件的方法,我这里也大同小异的写了一个. 准备一个MailHelper.cs通用类,如下所示: 重要的命 ...
- 使用VS2015进行C++开发的6个主要原因
使用VS2015进行C++开发的6个主要原因 使用Visual Studio 2015进行C++开发 在今天的 Build 大会上,进行了“将你的 C++ 代码转移至 VS2015 的 6 个原因”的 ...
- JavaWeb_day06_Filter过滤器
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day06 request 对象常用方法 respon ...
- TypeScript之面向对象初体验
1.安装nodejs和vscode: nodejs : https://nodejs.org/en/ Visual Studio Code : https://www.visualstudio.co ...
- 记录一次bug解决过程:eclipse集成lombok插件
一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Workflow笔记3——BookMark和持久化
BookMark 我们在平时的工作流使用中,并不是直接这样一气呵成将整个工作流直接走完的,通常一个流程到了某一个节点,该流程节点的操作人,可能并不会马上去处理该流程,而只有当处理人处理了该流程,流程才 ...