zoukankan      html  css  js  c++  java
  • 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 AUTO_INCREMENT,
    4      content LONGTEXT,
    5      img LONGBLOB
    6 );

    java:

      1 public class App_text {
      2     
      3     // 全局参数
      4     private Connection con;
      5     private Statement stmt;
      6     private PreparedStatement pstmt;
      7     private ResultSet rs;
      8     
      9 
     10     @Test
     11     // 1. 保存大文本数据类型   ( 写longtext)
     12     public void testSaveText() {
     13         String sql = "insert into test(content) values(?)";
     14         try {
     15             // 连接
     16             con = JdbcUtil.getConnection();
     17             // pstmt 对象
     18             pstmt = con.prepareStatement(sql);
     19             // 设置参数
     20             // 先获取文件路径
     21             String path = App_text.class.getResource("tips.txt").getPath();
     22             FileReader reader = new FileReader(new File(path));
     23             pstmt.setCharacterStream(1, reader);
     24             
     25             // 执行sql
     26             pstmt.executeUpdate();
     27             
     28             // 关闭
     29             reader.close();
     30         } catch (Exception e) {
     31             e.printStackTrace();
     32         } finally {
     33             JdbcUtil.closeAll(con, pstmt, null);
     34         }
     35     }
     36     
     37     @Test
     38     // 2. 读取大文本数据类型   ( 读longtext)
     39     public void testGetAsText() {
     40         String sql = "select * from  test;";
     41         try {
     42             // 连接
     43             con = JdbcUtil.getConnection();
     44             // pstmt 对象
     45             pstmt = con.prepareStatement(sql);
     46             // 读取
     47             rs = pstmt.executeQuery();
     48             if (rs.next()) {
     49                 // 获取长文本数据, 方式1:
     50                 //Reader r = rs.getCharacterStream("content");
     51                 
     52                 // 获取长文本数据, 方式2:
     53                 System.out.print(rs.getString("content"));
     54             }
     55             
     56         } catch (Exception e) {
     57             e.printStackTrace();
     58         } finally {
     59             JdbcUtil.closeAll(con, pstmt, null);
     60         }
     61     }
     62 }
     63 
     64 
     65 blob
     66 
     67 public class App_blob {
     68     
     69     // 全局参数
     70     private Connection con;
     71     private Statement stmt;
     72     private PreparedStatement pstmt;
     73     private ResultSet rs;
     74     
     75 
     76     @Test
     77     // 1. 二进制数据类型   ( 写longblob)
     78     public void testSaveText() {
     79         String sql = "insert into test(img) values(?)";
     80         try {
     81             // 连接
     82             con = JdbcUtil.getConnection();
     83             // pstmt 对象
     84             pstmt = con.prepareStatement(sql);
     85             // 获取图片流
     86             InputStream in = App_text.class.getResourceAsStream("7.jpg");
     87             pstmt.setBinaryStream(1, in);
     88             
     89             // 执行保存图片
     90             pstmt.execute();
     91             
     92             // 关闭
     93             in.close();
     94             
     95         } catch (Exception e) {
     96             e.printStackTrace();
     97         } finally {
     98             JdbcUtil.closeAll(con, pstmt, null);
     99         }
    100     }
    101     
    102     @Test
    103     // 2. 读取大文本数据类型   ( 读longblob)
    104     public void testGetAsText() {
    105         String sql = "select img from  test where id=2;";
    106         try {
    107             // 连接
    108             con = JdbcUtil.getConnection();
    109             // pstmt 对象
    110             pstmt = con.prepareStatement(sql);
    111             // 读取
    112             rs = pstmt.executeQuery();
    113             if (rs.next()) {
    114                 // 获取图片流
    115                 InputStream in = rs.getBinaryStream("img");
    116                 // 图片输出流
    117                 FileOutputStream out = new FileOutputStream(new File("c://1.jpg"));
    118                 int len = -1;
    119                 byte b[] = new byte[1024];
    120                 while ((len = in.read(b)) != -1) {
    121                     out.write(b, 0, len);
    122                 }
    123                 // 关闭
    124                 out.close();
    125                 in.close();
    126             }
    127             
    128         } catch (Exception e) {
    129             e.printStackTrace();
    130         } finally {
    131             JdbcUtil.closeAll(con, pstmt, null);
    132         }
    133     }
    134 }
  • 相关阅读:
    CF785E Anton and Permutation
    P4054 [JSOI2009]计数问题
    P4396 [AHOI2013]作业
    AD PCB中各层的含义
    AD21 使用手册 快捷键(二)
    AD 汉化和界面恢复
    AD21 使用手册 快捷键(一)
    TINA-TI 安装
    B站下载 视频
    restful-work基本组件
  • 原文地址:https://www.cnblogs.com/LZL-student/p/6032500.html
Copyright © 2011-2022 走看看