六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 47|回复: 0

如何将图片插入数据库

[复制链接]

升级  60.67%

39

主题

39

主题

39

主题

秀才

Rank: 2

积分
141
 楼主| 发表于 2013-1-15 02:47:00 | 显示全部楼层 |阅读模式
如何将图片,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 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表