如何将图片,Mp3 ,或是一些二进制类型的数据插入到sqlserver,或是 Oracle 数据库 . 方法是通过流进行操作.
创建一张测试表(sqlserver2000)
create table [pictable] ( [id] [int] identity (1, 1) not null , [img] [image] not null ) on [primary] textimage_on [primary] go
1,插入数据库的方法(sqlserver2000)
this.getConnection() 为获得连接的方法.
public void insertPic(String path)...{ Connection con = this.getConnection(); String sql = "insert into picTable values(?)" ; try ...{ PreparedStatement pstm = con.prepareStatement(sql); InputStream is = new FileInputStream(path); pstm.setBinaryStream(1, is, is.available()); int count = pstm.executeUpdate(); if(count>0)...{ System.out.println("插入成功"); }else...{ System.out.println("插入失败"); } is.close(); pstm.close(); con.close(); } catch (Exception e) ...{ e.printStackTrace(); } }
2,从数据库中读出来的方法.(sqlserver2000)
public void readPic(int id)...{ Connection con = this.getConnection(); String sql = "select * from picTable where id=?" ; try ...{ PreparedStatement pstm = con.prepareStatement(sql); pstm.setInt(1, id); ResultSet rs = pstm.executeQuery(); rs.next(); InputStream is = rs.getBinaryStream(2); OutputStream os = new FileOutputStream("f:/temp.jpg"); byte[] buff = new byte[1024]; int len = is.read(buff); while( len !=-1 )...{ os.write(buff); len = is.read(buff); } System.out.println("写入成功"); is.close(); os.close(); pstm.close(); con.close(); } catch (Exception e) ...{ e.printStackTrace(); } }
3,插入数据库的方法(Oracle)
public void insertBinary() { Connection con = MyConnection.getORACLEConnection(); String sql = "insert into testBinary values(?,?)"; try ...{ con.setAutoCommit(false); PreparedStatement pstm = con.prepareStatement(sql); pstm.setString(1, "a1"); pstm.setBlob(2, oracle.sql.BLOB.empty_lob()); int count = pstm.executeUpdate(); pstm.close(); pstm = con.prepareStatement("select * from testBinary where id=?"); pstm.setString(1, "a1"); ResultSet rs = pstm.executeQuery(); rs.next(); oracle.sql.BLOB blob = (BLOB) rs.getBlob(2); OutputStream os = blob.getBinaryOutputStream(); FileInputStream fi = new FileInputStream("E:\test.mp3"); byte[] buff = new byte[1024]; int len = fi.read(buff); while (len != -1) ...{ os.write(buff); len = fi.read(buff); } pstm = con.prepareStatement(sql); pstm.setString(1, "a1"); pstm.setBlob(2, blob); int res = pstm.executeUpdate(); con.commit(); pstm.close(); con.close(); if (res > 0) ...{ System.out.println("success"); } } catch (Exception ex) ...{ ex.printStackTrace(); } }
4,从数据库中读出来的方法.(Oracle)
public void readerBinaryStream() { Connection con = MyConnection.getORACLEConnection(); try ...{ java.sql.PreparedStatement pstm = con.prepareStatement( "select * from testBinary where id='a1'"); ResultSet rs = pstm.executeQuery(); rs.next(); oracle.sql.BLOB blob = (BLOB) rs.getBlob(2); InputStream is = blob.getBinaryStream(); FileOutputStream fi = new FileOutputStream("f:\aaaa.mp3"); byte[] buff = new byte[1024]; int len = is.read(buff); while (len != -1) ...{ fi.write(buff); len = is.read(buff); } fi.close(); } catch (SQLException ex) ...{ } catch (FileNotFoundException ex) ...{ ex.printStackTrace(); } catch (IOException ex) ...{ ex.printStackTrace(); } } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/caoyinghui1986/archive/2008/04/05/2252772.aspx