zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/loaderman/p/10007919.html
Copyright © 2011-2022 走看看