2012-12-08 3 views
-3

나는 데스크톱 프로그램을 가지고 있으며 다른 형식과 다른 크기의 이미지 파일을 db에 저장해야합니다. 어떤 생각을 어떻게 할 수 있습니까? 아무도 나 좀 도와 줄 수 없어?이미지 파일을 db로 저장하는 방법은 무엇입니까?

+1

이미지를 데이터베이스에 직접 저장할 수는 없으며 대신 이진 형식을 사용하여 이미지를 db에 저장할 수 있습니다. –

답변

0

당신은 다음과 같이 바이너리로 변환 으로 데이터베이스에 이미지를 저장 할 수 있습니다

public void saveImage(File file){ 
     try { 
      String img_id=JOptionPane.showInputDialog("Enter Image ID"); 
      FileInputStream fis=null; 
      String query="insert into image(image_id,image) values (?,?)"; 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con=DriverManager.getConnection("jdbc:odbc:image"); 
      PreparedStatement pstm=con.prepareStatement(query); 
      fis=new FileInputStream(file); 
      pstm.setString(1, img_id);  
      pstm.setBinaryStream(2, (InputStream)fis, (int)file.length()); 
      pstm.executeUpdate(); 
      JOptionPane.showMessageDialog(null, "Image Successfully Uploaded to Database"); 
      pstm.close(); 
      con.close(); 

     } catch (Exception ex) { 
      System.out.println("Exception Occured: "+ex); 
     } 
    } 

을 그리고 다시 바이너리에서 이미지를 제작하여 검색과 약간의 물리적 위치에 저장 :

public void getSavedImages(){ 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con = DriverManager.getConnection("jdbc:odbc:image"); 
      PreparedStatement pstm1 = con.prepareStatement("select * from image"); 
      ResultSet rs1 = pstm1.executeQuery(); 
      while(rs1.next()) { 
       InputStream fis1; 
       FileOutputStream fos; 
       String image_id; 
       try { 
        fis1 = rs1.getBinaryStream("image"); 
        image_id=rs1.getString("image_id"); 
        fos = new FileOutputStream(new File(Path to "C:\\" + (image_id) + "Your Extension(.jpg/.gif)")); 
        int c; 
        while ((c = fis1.read()) != -1) { 
         fos.write(c); 
        } 
        fis1.close(); 
        fos.close(); 

       } catch (Exception ex) { 
        System.out.println(ex); 
       } 
      } 
      pstm1.close(); 
      con.close(); 
     } catch (Exception ex) { 
      System.out.println("Exception Occured:"+ex); 
     } 
    } 
+0

@temcheg : 당신이 유용하다고 생각한다면, 그것을 Upvote하고 Accepted as Mark로 할 수 있습니다. :) – Parth

+0

고맙습니다, codeMaker, 너무! – temcheg

+0

@temcheg : 환영합니다. :) 그리고 대답을 수락 됨으로 표시하는 것을 잊지 마십시오. :) – Parth

0

일반적으로 이미지 파일의 주소는 데이터베이스에 저장해야합니다.

같은 결과를 달성하고 데이터베이스가 비대화되지 않습니다. http://en.wikipedia.org/wiki/Binary_large_object

정확한 구현은 데이터베이스 시스템에 따라 다릅니다 BLOB으로

0

초보 개발자에게는 가장 일반적인 문제입니다. 최상의 솔루션은 ... 이미지를 폴더에 저장하고 데이터베이스에 파일 경로를 저장 한 다음이 파일 경로를 사용하여 파일에 액세스 할 수 있습니다.

관련 문제