JDBC进阶:调用数据库,将文件或其他字节文件存入数据库,再从数据库取出写回硬盘
生活随笔
收集整理的這篇文章主要介紹了
JDBC进阶:调用数据库,将文件或其他字节文件存入数据库,再从数据库取出写回硬盘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package star.july.practise;
/*** JDBC進階:調用數據庫,將文件或其他字節文件存入數據庫,* 再從數據庫取出寫回硬盤*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;import org.junit.Test;import star.july.util.JDBCUtil;public class JDBC_a_addtable {//獲取當前日期Date date = new Date();int day = date.getDate();int month = date.getMonth();String time = (month+1)+"月"+day+"日";//使用JUtil方法測試@Testpublic void addFile(){try {//調用靜態方法Connection conn = JDBCUtil.connect();String sql = "insert into addtable(name,file,addtime,author) values(?,?,?,?)";PreparedStatement stmt = conn.prepareStatement(sql);//讀取文件File file = new File("F:/testwork/user.xml");InputStream in = new FileInputStream(file); //構建輸入通道//獲取文件名字stmt.setString(1, file.getName());//設置文件類型stmt.setBlob(2, in);stmt.setString(3,time);stmt.setString(4, "star");//執行更新stmt.executeUpdate();JDBCUtil.close(conn, stmt);} catch (Exception e) {e.printStackTrace();}}@Testpublic void write(){try {Connection conn = JDBCUtil.connect();String sql = "select * from addtable where id=?";PreparedStatement stmt = conn.prepareStatement(sql);//設置id的值stmt.setInt(1, 1);//執行查詢ResultSet rs = stmt.executeQuery();if(rs.next()){InputStream is = rs.getBlob("file").getBinaryStream();//寫回硬盤FileOutputStream out = new FileOutputStream(new File("F:/testwork/user2.xml"));;byte[] b = new byte[1024];int len = 0 ;if((len = is.read(b))!= -1){out.write(b,0,len); //讀取字節并寫進硬盤}}//關閉資源JDBCUtil.close(conn, stmt);} catch (Exception e) {e.printStackTrace();}}}
總結
以上是生活随笔為你收集整理的JDBC进阶:调用数据库,将文件或其他字节文件存入数据库,再从数据库取出写回硬盘的全部內容,希望文章能夠幫你解決所遇到的問題。