1.将Blob、Clob类型数据保存到数据库

1 import java.io.File;
2 import java.io.FileInputStream;
3 import java.io.FileReader;
4 import java.sql.Connection;
5 import java.sql.DriverManager;
6 import java.sql.PreparedStatement;
7
8
9 public class Test4 {
10 /**
11 * 将图片、文本保存在数据库
12 * Blob、Clob
13 * @author 容杰龙
14 */
15 public static void main(String[] args) {
16 try {
17 Class.forName("com.mysql.jdbc.Driver");
18 String url="jdbc:mysql://localhost:3306/rjl";
19 String user="rjl";
20 String password="123";
21 Connection conn = DriverManager.getConnection(url, user, password);
22 String sql1="insert into pic(img,msg) values(?,?)";
23
24 File file=new File("C:/Users/Rong/Desktop/qq.png");
25 FileInputStream inputStream = new FileInputStream(file);
26
27 FileReader reader = new FileReader("C:/Users/Rong/Desktop/msg.txt");
28
29 PreparedStatement ps = conn.prepareStatement(sql1);
30 //字节流-二进制图像
31 ps.setBlob(1, inputStream);
32 //字符流
33 ps.setClob(2, reader);
34 int count = ps.executeUpdate();
35 if (count>0) {
36 System.out.println("添加成功!");
37 }
38 } catch (Exception e) {
39 e.printStackTrace();
40 }
41
42 }
43
44 }
View Code
2.从数据库表里读取Blob、Clob类型数据
1 package com.rong.web;
2
3 import java.io.FileOutputStream;
4 import java.io.FileWriter;
5 import java.io.InputStream;
6 import java.io.Reader;
7 import java.sql.Connection;
8 import java.sql.DriverManager;
9 import java.sql.PreparedStatement;
10 import java.sql.ResultSet;
11
12 public class Test5 {
13
14
15 /**
16 * 读取MySQL数据库Blob、Clob类型的数据到硬盘
17 * @author 容杰龙
18 */
19 public static void main(String[] args) {
20 try {
21 Class.forName("com.mysql.jdbc.Driver");
22 String url="jdbc:mysql://localhost:3306/rjl?user=root&password=123123";
23 Connection conn = DriverManager.getConnection(url);
24 String sql="select * from pic where id=?";
25 PreparedStatement ps = conn.prepareStatement(sql);
26 ps.setInt(1, 1);
27 ResultSet rs = ps.executeQuery();
28 while(rs.next()){
29 //获取字节输入流
30 InputStream inputStream = rs.getAsciiStream("img");
31 //获取字符输入流
32 Reader reader = rs.getCharacterStream("msg");
33 byte[] bytes=new byte[1024];
34 char[] chars=new char[1024];
35 int len=0;
36 //创建文件输出流,设置文件存储的硬盘位置
37 FileOutputStream fos = new FileOutputStream("C:/Users/Administrator/Desktop/jdbc.png");
38 FileWriter fw = new FileWriter("C:/Users/Administrator/Desktop/jdbc.txt");
39 //字节输出
40 while ((len=inputStream.read(bytes))!=-1) {
41 fos.write(bytes, 0, len);
42 }
43 fos.close();
44 inputStream.close();
45 len=0;
46 //字符输出
47 while ((len=reader.read(chars))!=-1) {
48 fw.write(chars, 0, len);
49 }
50 fw.close();
51 reader.close();
52
53 }
54 } catch (Exception e) {
55 e.printStackTrace();
56 }
57
58 }
59
60 }

1 package com.rong.web;
2
3 import java.io.FileOutputStream;
4 import java.io.FileWriter;
5 import java.io.InputStream;
6 import java.io.Reader;
7 import java.sql.Blob;
8 import java.sql.Clob;
9 import java.sql.Connection;
10 import java.sql.DriverManager;
11 import java.sql.PreparedStatement;
12 import java.sql.ResultSet;
13
14 public class Test6 {
15
16 /**
17 * 读取MySQL数据库Blob、Clob类型的数据到硬盘
18 * @author 容杰龙
19 */
20 public static void main(String[] args) {
21 try {
22 Class.forName("com.mysql.jdbc.Driver");
23 String url="jdbc:mysql://localhost:3306/rjl?user=root&password=123123";
24 Connection conn = DriverManager.getConnection(url);
25 String sql="select * from pic where id=?";
26 PreparedStatement ps = conn.prepareStatement(sql);
27 ps.setInt(1, 1);
28 ResultSet rs = ps.executeQuery();
29 while(rs.next()){
30 //获取blob对象
31 Blob blob = rs.getBlob("img");
32 //获取二进制字节输入流
33 InputStream binaryStream = blob.getBinaryStream();
34 //////////////////////////////////////////////////
35
36 //获取clob对象
37 Clob clob = rs.getClob("msg");
38 //获取字符输入流
39 Reader characterStream = clob.getCharacterStream();
40
41 byte[] bytes=new byte[1024];
42 char[] chars=new char[1024];
43 int len=0;
44 //创建文件输出流,设置文件存储的硬盘位置
45 FileOutputStream fos = new FileOutputStream("C:/Users/Administrator/Desktop/jdbc.png");
46 FileWriter fw = new FileWriter("C:/Users/Administrator/Desktop/jdbc.txt");
47 //字节输出
48 /////////////////////////////////
49 // byte[] bs = rs.getBytes("img");
50 // fos.write(bs);
51 ////////////////////////////////////
52 while ((len=binaryStream.read(bytes))!=-1) {
53 fos.write(bytes, 0, len);
54 }
55 fos.close();
56 binaryStream.close();
57 len=0;
58 //字符输出
59 while ((len=characterStream.read(chars))!=-1) {
60 fw.write(chars, 0, len);
61 }
62 fw.close();
63 characterStream.close();
64
65 }
66 } catch (Exception e) {
67 e.printStackTrace();
68 }
69
70 }
71
72 }