一、 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. DevExpress v18.2版本亮点——Analytics Dashboard篇(一)

    行业领先的.NET界面控件——DevExpress v18.2版本亮点详解,本文将介绍了DevExpress Analytics Dashboard v18.2 的版本亮点,新版30天免费试用!点击下 ...

  2. elementui多个文件上传问题

    我认为绑定一个值 然后把值改变不同的名字即可

  3. mybatis多个参数时传参方式

    第一种方案 DAO层的函数方法 Lecture getLecture(Integer id, Integer parentId); 对应的mapper.xml <select id=" ...

  4. 容器镜像服务 联手 IDE 插件,实现一键部署、持续集成与交付

    容器技术提供了一种标准化的交付方式,将应用的代码以及代码环境依赖都打包在一起,成为一个与环境无关的交付物,可以被用在软件生命周期的任何阶段,彻底改变了传统的软件交付方式. 甚至可以说,是在容器技术之后 ...

  5. JS&ASPDotNet_大文件上传问题

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...

  6. 详解HASH(字符串哈希)

    HASH意为(散列),是OI的常用算法. 我们常用哈希的原因是,hash可以快速(一般来说是O(段长))的求出一个子段的hash值,然后就可以快速的判断两个串是否相同. 今天先讲string类的has ...

  7. 【BZOJ2460】元素(拟阵)

    题意:给定n个物品,每个物品有属性x和价值y,要求从中选出一些使得价值和最大并且其中没有属性xor和为0的非空子集 n<=1000,x<=1e18,y<=1e4 思路:没有xor和为 ...

  8. hihocoder1286 : 子矩阵求和

    http://hihocoder.com/problemset/problem/1286 题解 NB分析题. 首先我们令\(s[i][j]\)表示以\((i,j)\)为左上角的矩形的权值和. 因为\( ...

  9. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  10. 在阿里云虚拟主机上部署Laravel

    拿laravel5.1来说: 在根目录下创建一个local文件夹,把网站根目录下除了public文件夹以外所有文件及文件夹剪切到local文件夹中 然后把public文件夹下的所有文件剪切到网站根目录 ...