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、Clob13 * @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 }
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 }