java大对象存取的简单实现
代码出自: http://www.itlanguageexpress.info/?p=237
package info.itlanguageexpress.LargeObject; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 这里不仅仅是word文件,所有大对象文件都适用 * @author Administrator * */ public class MySqlLargeObjectAccess { public static String DRIVER = "org.gjt.mm.mysql.Driver"; // JDBC:mysql://localhost|IP:端口号/数据库名 public static String URL = "JDBC:mysql://localhost:3306/JustTest"; // SERVER NAME public static String USER = "root"; // PASS WORD public static String PASSWORD = "your password"; public static void main(String[] args) throws Exception { Connection conn = null; try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PASSWORD); insertWordFileToMySql(conn); fetchWordFileFromMySql(conn); } catch (Exception ex) { ex.printStackTrace(System.out); } finally { try { conn.close(); } catch (Exception ex) { } } } /** * 存word * @param conn * @throws SQLException * @throws IOException */ public static void insertWordFileToMySql(Connection conn) throws SQLException, IOException { PreparedStatement pstm = conn .prepareStatement("insert into wordInputTest values (?,?)"); // fileName pstm.setString(1, "docx1"); InputStream in = new FileInputStream("F:" + File.separator + "test1.docx"); // file pstm.setBinaryStream(2, in, in.available()); pstm.executeUpdate(); pstm.close(); } /** * 取word * @param conn * @throws SQLException * @throws IOException */ public static void fetchWordFileFromMySql(Connection conn) throws SQLException, IOException { PreparedStatement pstm = conn .prepareStatement("select * from wordInputTest where fileName = ?"); pstm.setString(1, "docx1"); ResultSet rs = pstm.executeQuery(); int count = 1; while(rs.next()) { //file为存储文件列的name InputStream in = rs.getBinaryStream("file"); FileOutputStream out = new FileOutputStream("F:" + File.separator + "testcopy" + count + ".docx"); byte[] b = new byte[1024]; int len = 0; while ((len = in.read(b)) != -1) { out.write(b, 0, len); out.flush(); } out.close(); in.close(); count++; } rs.close(); pstm.close(); } }