jdbc 使用PreparedStatement來存儲和讀取大數據(Blob或Clob)

  //假設這裏創建的數據庫位use,而創建的表位luser import  java.io.*; import java.sql.*; public class DBB{ private  static  String driver ="com.mysql.jdbc.driver"; private  static  String url ="jdbc:mysql://localhost:3306/use"; private static  String user="root"; private static String pass="admin"; public static  void main(String[]args){ Connection con= null; PreparedStatement sta= null; ResultSet res= null; try{ //獲取數據源 //假設就是從d盤中讀取的一張照片; File file= new File("d:" + File.separator + "photo.jpg"); int length= (int)file.length(); InputStream input = new FileInputStream(file); //加載mysql驅動 Class.forName(driver); //取得連接對象 con= DriverManager.getConnection(url,user,pass); //取得操做對象 sta= con.prepareStatement("insert into luser values(?,?,?);"); //加載數據 sta.setInt(1,110); sta.setString(2,"namefile"); sta.setBinaryStream(3,input ,length); sta.executeUpdate(); sta.clearParameters(); input.close();//釋放資源; }catch(SQLException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }catch(ClassNotFoundException e){ e.printStackTrace(); } finally{ if(con!=null){ try{ con.close(); }catch(SQLException e){   //(_)%^&**(_)(&*)(*#%$%^&*(()__)((( e.printStackTrace(); } } } Statement stat= null; try{ //數據的取得 stat= con.createStatement(); stat.executeQuery("select* from luser;"); res.next(); String filename= res.getString(2); Blob blob= res.getBlob(3); //把得到的數據寫到指定的文件中 FileOutputStream out= new FileOutputStream("d:" + File.separator+ "dong" +".bak"); out.write(blob.getBytes(1,(int)blob.length())); out.flush();//把內存中的東西刷出來 out.close();//釋放資源 }catch(SQLException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } finally{ if(stat!= null){ try{ stat.close(); }catch(SQLException e){ e.printStackTrace(); } } if(con!=null){ try{ con.close(); }catch(SQLException e){ e.printStackTrace(); } } } } }
相關文章
相關標籤/搜索