如何将图片插入数据库
2015-11-10 10:05
423 查看
如何将图片,Mp3 ,或是一些二进制类型的数据插入到sqlserver,或是 Oracle 数据库 . 方法是通过流进行操作.
创建一张测试表(sqlserver2000)
1,插入数据库的方法(sqlserver2000)
this.getConnection() 为获得连接的方法.
3,插入数据库的方法(Oracle)
4,从数据库中读出来的方法.(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(); } }
相关文章推荐
- Oracle显示游标的使用及游标for循环
- 11.20开幕:Oracle + MySQL 嘉年华群星云集
- Oracle分析函数
- mysql:表注释和字段注释
- Oracle的instr函数
- 数据库属性配置文件:bonecp.properties
- MySql避免重复插入记录
- Windows下安装并设置Redis
- mysql 锁 for update
- SQL Server数据库文件. mdf和.mds的导出
- oracle 内连接 左外连接 右外连接的用法,(+)符号用法
- MySql命令实例汇总
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- oracle显示两个字段相除的结果
- mysql样例数据库employees
- Oracle查看锁表和解除锁表
- 数据库ORA-01033错误解决办法
- Oracle RMAN的备份与恢复命令详解
- db2数据库抛错:Result set already closed
- CentOS下Redis服务器安装配置