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);
            }
        }
    }
  • 相关阅读:
    2.1.7出现异常,锁自动释放
    2.1.5脏读
    2.1.4synchronized方法与锁对象
    2.1.3多个对象多个锁
    2.1.2实例变量非线程安全
    2.1.1方法内的变量为线程安全
    Linux内核开发
    fl2440 platform总线led字符设备驱动
    fl2440字符设备led驱动
    cdev结构体及其相关函数
  • 原文地址:https://www.cnblogs.com/loaderman/p/10007919.html
Copyright © 2011-2022 走看看