jdbc 使用PreparedStatement来存储和读取大数据(Blob或Clob)
2018-07-20 来源:open-open
//假设这里建立的数据库位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(); } } } } }
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇: C++实现KMP算法
最新资讯
热门推荐