2016-05-02 8 views
1

私は7500レコードのデータベーステーブルを持っています。私はすべての7500のjpg画像をラップトップのフォルダにエクスポートし、EMPID + TYPEに基づいて名前を付けることができるものを書きたいと思っています。Javaを使用してSQL Serverからバイナリデータをエクスポートする

enter image description here

だから、ブロブは、最初の行の1008421_0.jpg

という名前になり、私はこのような何かを考えていたが、どのようにiは、各画像に名前を付けるのですか?

String filePath = "C:/Photos/"; 
try { 
     Connection conn = DriverManager.getConnection(url); 

     String sql = "SELECT * FROM MMOBJ WHERE EMPID > 1 "; 
     PreparedStatement statement = conn.prepareStatement(sql); 

     ResultSet result = statement.executeQuery(); 
     while (result.next()) { 
      Blob blob = result.getBlob("photo"); 
      InputStream inputStream = blob.getBinaryStream(); 
      OutputStream outputStream = new FileOutputStream(filePath); 

      int bytesRead = -1; 
      byte[] buffer = new byte[BUFFER_SIZE]; 
      while ((bytesRead = inputStream.read(buffer)) != -1) { 
       outputStream.write(buffer, 0, bytesRead); 
      } 

      inputStream.close(); 
      outputStream.close(); 

答えて

0

あなたの質問を理解しているかどうかわかりません...次回は具体的にしてください。

実際、各行にループの繰り返しが必要です。 if (result.next())を​​に交換することをお勧めします。 さらに、あなたのfilePathは一定のようですが、質問の理解が正しい場合はEMPIDに依存する必要があります。

最後に、リソースリークを避けるためにStatementおよび/またはResultSetを閉じることを忘れないでください。

+0

こんにちはSamjaf、ありがとうございます、私のfilepathはString filePath = "C:/Photos/Test.jpg"です。つまり、すべての画像の名前はtest.jpgですか?私はそれを変えようとします。ご返信ありがとうございます。 –

+0

あなたの提案を取り入れて、私が達成したいことを明確にするために質問を編集しました。 –

0

これを使用して、各行のファイル名を変更する方法を検討しました。

ResultSet result = statement.executeQuery(); 
     while (result.next()) { 
      Blob blob = result.getBlob("LNL_BLOB"); 
      String name = result.getString("EMPID"); 
      InputStream inputStream = blob.getBinaryStream(); 
      OutputStream outputStream = new FileOutputStream(filePath+name+".jpg"); 

ご協力いただきありがとうございます。

関連する問題