jdbc java数据库连接 11)中大文本类型的处理
Posted 卡拉瓦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
以上是关于jdbc java数据库连接 11)中大文本类型的处理的主要内容,如果未能解决你的问题,请参考以下文章