2016-12-17 16 views
2

私のテーブルimageには、imageという2番目の列を持つすべての画像を取得しようとしています。エラーコードinvalid column indexが発生しました。データベースから複数の画像をJavaでファイルに取り出す

package p1; 
import java.sql.*; 
import java.io.*; 
public class test 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","admin");  
      PreparedStatement ps=con.prepareStatement("select image from imagetable"); 
      ResultSet rs=ps.executeQuery(); 
      int i=0; 
      while(rs.next()) 
      {   
       Blob b=rs.getBlob(2); 
       byte barr[]=b.getBytes(1,(int)b.length());  
       FileOutputStream fout=new FileOutputStream("d:\\img"+i+".png"); i++; 
       fout.write(barr);    
       fout.close(); 
      }//end of while 

      System.out.println("ok");     
      con.close(); 
     } 
     catch (Exception e)  
     { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

インデックスがBlob b = rs.getBlob(2);でオフになっていると思うのは、各行から単一の値を取得しているからです。 try Blob b = rs.getBlob( "image");代わりに –

答えて

1

例外の理由は、あなたが単一の値を取得しているということである

Blob b=rs.getBlob("image"); 

代わりの

Blob b=rs.getBlob(2); 

を試し列インデックスが無効である理由、それはです。

+0

2を書くことによって、私は2番目の列から値を取得することを指定しています。ループに置かれているので、1回の繰り返しで1つの値を取得します。 –

+0

それはうまく働いています.....あなたに感謝... :) –

+0

あなたの歓迎。この答えを正しいものとしてマークすることを忘れないでください:) –

関連する問題