• Jdbc中大文本类型的处理


    Oracle中大文本数据类型,

             Clob    长文本类型   (MySQL中不支持,使用的是text)

             Blob    二进制类型

    MySQL数据库,

             Text    长文本类型

             Blob    二进制类型


    package com.loaderman.demo.e_longtext;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.InputStream;
    import java.io.Reader;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import com.loaderman.demo.utils.JdbcUtil;
    import org.junit.Test;
    
    
    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);
            }
        }
    }

    package com.loaderman.demo.e_longtext;
    import java.io.File;
    import java.io.FileReader;
    import java.io.Reader;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import com.loaderman.demo.utils.JdbcUtil;
    import org.junit.Test;
    
    
    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);
            }
        }
    }
  • 相关阅读:
    Windows7如何让快速启动栏的资源管理器默认打开我的电脑(计算机)
    [转]C# Invoke和BeginInvoke的区别
    [转]RAID0、RAID1、RAID0+1、RAID5原理介绍
    【引用】Dashboard设计思路
    [Resolution]Your search cannot be completed because this site is not assigned to an indexer
    A Brief Introduction to Boolean Algebra(布尔代数简介)
    [转]从头开始安装Eclipse和VE
    [转]领导者如何问更好的问题
    如何使用花生壳(www.oray.com)实现动态域名映射(DDNS)
    如何手动删除Windows服务
  • 原文地址:https://www.cnblogs.com/loaderman/p/10007919.html
Copyright © 2020-2023  润新知