2012-11-18 37 views
1

如何将图像存储到Oracle数据库中?我该如何从该数据库检索图像?这里是我的代码:如何将映像存储到Oracle数据库?

import java.io.*; 
import java.sql.*; 
import java.util.*; 
class Pic3 
{ 
    public static void main(String args[]) throws Exception 
    { 
     Statement s; 
     Connection c; 
     FileInputStream fis; 
     PreparedStatement ps; 
     File file; 
     try 
     { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      c=DriverManager.getConnection("Jdbc:Odbc:sidhu","system","system"); 
      s=c.createStatement(); 
      s.execute("Create table Img1(Image_No number(5),Photo blob)"); 
     } 
     catch(Exception e1) 
     { 
      e1.printStackTrace(); 
     } 

     try 
     { 
      file=new File("f:/image.jpeg"); 
      fis=new FileInputStream(file); 

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      c=DriverManager.getConnection("Jdbc:Odbc:sidhu","system","system"); 

      String str="insert into Img1 values(?,?)"; 
      ps=c.prepareStatement(str); 
      ps.setInt(1,(int)file.length()); 
      ps.setBinaryStream(2,fis,(int)file.length()); 

      //System.out.println("success"); 
      ps.execute(); 

      ps.close(); 
      c.close(); 
     } 
      catch(SQLException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
+3

不要将图像存储在数据库中。将图像存储在某个位置,然后将图像的路径存储在数据库中。在需要时从位置检索图像。 http://stackoverflow.com/questions/1212991/do-you-think-its-a-good-idea-to-save-billions-of-images-into-database – Amarnath

回答

1

变化帖前行这样

Class.forName("oracle.jdbc.driver.OracleDriver"); 
ps.setBinaryStream(2,fis,(byte)file.length()); 

,而不是

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
ps.setBinaryStream(2,fis,(int)file.length()); 

因为

JDBC-ODBC bridge driver不支持的斑点,即使底层数据库确实。

+0

plese提供了如何获取插入图像 – Bhaskar

+0

你的意思是,你想检索图像存储在Oracle中的图像,我是吗? – sunleo

相关问题