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

一、 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"));

    }

}

原文地址:https://www.cnblogs.com/ID-qingxin/p/10829075.html

时间: 2024-11-10 21:58:32

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

java database connectivity

前言 jdbc是一种用来在java程序中执行sql的api,它为java连接数据库提供了一组接口和类. 正文 jdbc使用步骤 连接数据库的过程:java app->jdbc api ->driver; 准备连接数据库的相关数据 1.获得当前数据库连接的用户名和密码 2.获得数据库服务器的地址(ip) 3.获得数据库连接的端口号 oracle默认的是1521 4.获得书库的实例sid,即数据库名称 获得连接字符串 url=jdbc:oracle:thin:@ip:port:sid 获得对应数据

JDBC连接数据库(Java DataBase Connectivity,java)

通过JDBC操作数据库 package Head18; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mysql.jdbc.PreparedStatement; public class JDBC { public static void

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

一.JDBC简介 Java是通过JDBC技术实现对各种数据库的访问的,JDBC是Java数据库连接技术的简称.它可以把数据持久保存,是一种持久化机制. 1.持久化 持久化就是将程序中的数据在瞬时状态和持久状态间转换的机制. 2.JDBC API Connection连接接口 Statement接口 ResultSet结果集接口 PerparedStatement接口 3.JDBC Driver Manager(驱动程序管理器) SUN公司提供,它是JDBC体系结构的支柱,负责管理各种不同的驱动(

Java DataBase(JDBC)

A brief review of Database Database (DB): an organised collection of data Relational DBs (first published by Edgar F. Codd (IBM) in 1970) store data in: tables A table in a database consists of: rows & columns Rows: records Columns: attributes of the

JDBC(Java Data Base Connectivity)基本用法

一.什么是JDBC JDBC(Java Database Connection)为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成.是java程序与数据库系统通信的标准APl. JDBC API使得开发人员可以使用纯 java 的方式来连接数据库,并执行操作. sun公司由于不知道各个主流商用数据库的程序代码,因此无法自己写代码连接各个数据库.因此,sun公司决定自己提供一套api,凡是数据库想与Java进行连接的,数据库厂商自己必须实现JDBC这套接口.而数据库厂商的

69期-Java SE-031_MySQL-001-002 创建表、MySQL数据类型、数据的管理(数据库结构、数据表、数据)、SQL 函数

### 创建表 1.创建数据库 ```sql create database mstest default character set utf8 collate utf8_general_ci ``` 2.创建数据表 ```sql create table user( id int, name varchar(11) ) ``` Java 数据类型:基本数据类型 byte short int long double float boolean char ? 引用类型 MySQL 数据类型 - 整

JDBC(Java Data Base Connectivity)高级用法

一.批处理 Batch 对于大量的批处理,建议使用statement,因为PreparedStatement的预编译空间有限,当数据量特别大时,会发生异常. 示例 package com.lgd.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /**

Trail: JDBC(TM) Database Access1

package com.oracle.tutorial.jdbc; import java.sql.BatchUpdateException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Savepoint;

jdbc java数据库连接 11)中大文本类型的处理

1. Jdbc中大文本类型的处理 Oracle中大文本数据类型, Clob    长文本类型   (MySQL中不支持,使用的是text) Blob    二进制类型 MySQL数据库, Text    长文本类型 Blob    二进制类型 需求: jdbc中操作长文本数据. 设计: 测试表 编码: 保存大文本数据类型 读取大文本数据类型 保存二进制数据 读取二进制数据 MYSQL: 1 -- 测试大数据类型 2 CREATE TABLE test( 3 id INT PRIMARY KEY