一、 CLOB(Character Large Object )

– 用于存储大量的文本数据

– 大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的。而非一般的字段,一次即可读出数据。

• Mysql中相关类型:

– TINYTEXT最大长度为255  (28–1)字符的TEXT列。

– TEXT[(M)]最大长度为65,535  (216–1)字符的TEXT列。

– MEDIUMTEXT最大长度为16,777,215  (224–1)字符的TEXT列

– LONGTEXT最大长度为4,294,967,295或4GB (232–1)字符的TEXT列。

/***
* 操纵大字段 测试CLOB 文本大对象
*/
package com.sxt.jdbc; import java.io.ByteArrayInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class Demo06 {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection coon=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456"); //1、向数据库中写入大字节的数据
PreparedStatement ps1=coon.prepareStatement("update t_user set myInfo=? where id=1");
ps1.setClob(1, new FileReader("d://LiBai.txt"));//从文件中读取数据
//ps1.executeUpdate(); PreparedStatement ps2=coon.prepareStatement("update t_user set myInfo=? where id=2");
ps2.setClob(1, new InputStreamReader(new ByteArrayInputStream("杜甫,唐朝诗人".getBytes())));
//ps2.executeUpdate();//读取字节流,将程序中的字符串输入到数据库中 //2、从数据库中读取数据
PreparedStatement ps3=coon.prepareStatement("select *from t_user where id=?");
ps3.setObject(1, 1);
ResultSet rs=ps3.executeQuery();
while (rs.next()) {//
Clob cl=rs.getClob("myInfo");
Reader reader=cl.getCharacterStream();//返回一个字符流 然后需要读取字符流 int temp=0;
while ((temp=reader.read())!=-1) {
System.out.print((char)temp);
}
}
}
}

二、BLOB(Binary Large Object)

– 用于存储大量的二进制数据

– 大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的。而非一般的字段,一次即可读出数据。

• Mysql中相关类型:

– TINYBLOB最大长度为255(28–1)字节的BLOB列。

– BLOB[(M)]最大长度为65,535(216–1)字节的BLOB列。

– MEDIUMBLOB最大长度为16,777,215(224–1)字节的BLOB列。

– LONGBLOB最大长度为4,294,967,295或4GB(232–1)字节的BLOB列。

/***
* 操纵大字段 测试BLOB 文本大对象 例如插入用户头像
*/
package com.sxt.jdbc; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class Demo07 {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection coon=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456"); //1、向数据库中写入二进制的数据 如jpg图片
PreparedStatement ps1=coon.prepareStatement("update t_user set headImg=? where id=1");
ps1.setBlob(1, new FileInputStream("d://LiBai.jpg"));//从文件中读取数据
ps1.executeUpdate(); //2、从数据库中读取数据
PreparedStatement ps3=coon.prepareStatement("select *from t_user where id=?");
ps3.setObject(1, 1);
ResultSet rs=ps3.executeQuery();
while (rs.next()) {//
Blob bl=rs.getBlob("headImg");
InputStream reader=bl.getBinaryStream();//返回一个输入流 然后需要读取输入流 OutputStream os=new FileOutputStream("libai.jpg");
int temp=0;
while ((temp=reader.read())!=-1) {
os.write(temp);
}
reader.close();
os.close();
}
}
}

三、封装一些信息

MySQL:

mysqlDriver=com.mysql.jdbc.Driver

mysqlURL=jdbc\:mysql\://localhost\:3306/testjdbc

mysqlUser=root

mysqlPwd=123456

Oracle:

oracleDriver=oracle.jdbc.driver.OracleDriver

oracleURL=jdbc\:oracle\:thin\:@localhost\:1521\:orcl

oracleUser=scott

oraclePwd=tiger

【资源文件】

mysqlDriver=com.mysql.jdbc.Driver
mysqlURL=jdbc\:mysql\://localhost\:3306/testjdbc
mysqlUser=root
mysqlPwd=123456

 【基本信息】

/**
* 可以帮连接数据的信息写出一各类
* 具体信息在db.properties这个文件中
*/
package com.sxt.jdbc; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties; public class JDBCUtil {
static Properties pros=null;
static{//静态代码块 在执行JDBCUtil这个类时只执行一次,用作初始化
pros=new Properties();
try {//读取具体信息
pros.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
} catch (IOException e) {
e.printStackTrace();
}
} public static Connection getMysqlConnection() throws Exception {
Class.forName(pros.getProperty("mysqlDriver"));//便于修改源数据库的账号和密码等信息
return DriverManager.getConnection(pros.getProperty("mysqlURL"),
pros.getProperty("mysqlUser"),pros.getProperty("mysqlPwd")); } }

[19/05/07-星期二] JDBC(Java DataBase Connectivity)_CLOB(存储大量的文本数据)与BLOB(存储大量的二进制数据)的更多相关文章

  1. [19/05/05-星期日] JDBC(Java DataBase Connectivity,java数据库连接)_mysql基本知识

    一.概念 (1).是一种开放源代码的关系型数据库管理系统(RDBMS,Relational Database Management System):目前有很多大公司(新浪.京东.阿里)使用: (2). ...

  2. [19/05/06-星期一] JDBC(Java DataBase Connectivity,java数据库连接)_基本知识

    一.概念 JDBC(Java Database Connectivity)为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成.是java程序与数据库系统通信的标准API. J ...

  3. JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language

    JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据 ...

  4. [19/05/08-星期三] JDBC(Java DataBase Connectivity)_ORM(Object Relationship Mapping, 对象关系映射)

    一.概念 基本思想: – 表结构跟类对应: 表中字段和类的属性对应:表中记录和对象对应: – 让javabean的属性名和类型尽量和数据库保持一致! – 一条记录对应一个对象.将这些查询到的对象放到容 ...

  5. JDBC (Java DataBase Connectivity)数据库连接池原理解析与实现

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...

  6. 【学习笔记】JDBC数据库连接技术(Java Database Connectivity)

    一.JDBC简介 Java是通过JDBC技术实现对各种数据库的访问的,JDBC是Java数据库连接技术的简称.它可以把数据持久保存,是一种持久化机制. 1.持久化 持久化就是将程序中的数据在瞬时状态和 ...

  7. JDBC(Java Database Connectivity)编写步骤

    JDBC是代表一组公共的接口,是Java连接数据库技术: JDBC中的这些公共接口和DBMS数据库厂商提供的实现类(驱动jar),是为了实现Java代码可以连接DBMS,并且操作它里面的数据而声名的. ...

  8. JDBC——Java语言连接数据库的标准

    JDBC概述 API JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  9. JDBC:Java连接数据库的桥梁

    JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成 ...

随机推荐

  1. 2019长安大学ACM校赛网络同步赛 B Trial of Devil (递归)

    链接:https://ac.nowcoder.com/acm/contest/897/B来源:牛客网 Trial of Devil 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32 ...

  2. java 中的编码(二)

    UTF-16编码规则: 按照UTF-16编码规则计算下Unicode码位为 U+10002 (十进制:65538)的字符的UTF-16编码表示. U+10002落在 [U+10000, U+10FFF ...

  3. java定义时间

    import java.text.SimpleDateFormat; import java.util.Date; SimpleDateFormat format=new SimpleDateForm ...

  4. Windows Server2008R2蓝屏,分析dmp文件

    使用Windbp PreView打开dmp文件后,在命令栏输入如下命令: !analyze -v 解析结果中蓝色字体为错误原因分析

  5. Pytorch详解NLLLoss和CrossEntropyLoss

    是什么? https://www.cnblogs.com/marsggbo/p/10401215.html 具体pytorch怎么运算的 https://blog.csdn.net/qq_222102 ...

  6. 大数据学习笔记之初识Hadoop

    1.Hadoop概述 1.1 Hadoop名字的由来 Hadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名 Hadoop的官网:http://hadoop.apache.org . 1.2 ...

  7. 【NOIP2016提高A组8.12】通讯

    题目 "这一切都是命运石之门的选择." 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短信,并由此得知了伦太郎制作出了电话微波炉(仮). 为了掌握时间机器的技术 ...

  8. 【bzoj4551】【NOIP2016模拟7.11】树

    题目 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标 ...

  9. jq 获取各个元素的宽度高度的方法

    JS获取各种宽度.高度的简单介绍: scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获 ...

  10. HTML5基础内容(二)

    HTML(HyperText Markup Language)超文本标记语言 一.HTML注释 元素就是标签,标签就是元素. 注释中的内容不会在页面中显示,但是可以在源码中看到. 可以通过编写注释来对 ...