2012-02-12 26 views
0

私は、PDFファイルをCLOB列に格納するDBを持っています。私はそれを取得するJavaプログラムを記述したい。 Clob Javaクラスを使用して検索するだけでは機能しません。私はCLOBデータ型をBLOBに変換してからファイルに書き込む必要があると思います。誰も私にどのようにBLOBにBLOBをjavaプログラムを使用して変換するか教えてもらえますか?ここでclobをblobに変換する


は私のデシベル

DOC_ID NOT NULL VARCHAR2(60) 
DOC_NAME NOT NULL VARCHAR2(500) 
DOC_TYPE NOT NULL VARCHAR2(100) 
DOC_CONTENT CLOB() 

私はDoc_CONTENTを取得するためにDOC_IDを送っています。 DOC_CONTENTはここdoc_name


としての私のローカルドライブに保存します私のJavaコードは、CLOBからBLOBへの変換は助けにはなりません

PreparedStatement stmnt = conn.prepareStatement("select DOC_CONTENT, DOC_NAME from documentum_docs_queue where doc_id=" + documentid); 

     ResultSet rs = stmnt.executeQuery();  
     Clob aBlob = null; 
     String filename = "filename"; 
     while (rs.next()) {    
      try {     
       aBlob = rs.getClob(1); 
       filename = rs.getString(2); 
       //System.out.println("filename-------------- " + filename); 
      } catch (Exception ex) { 
       ex.printStackTrace();     
       byte[] bytes = rs.getBytes(1); 
      } 
     } 
     rs.close(); 
     stmnt.close(); 

     File blobFile = new File("c:/temp/writer/"+filename); 
     //System.out.println("blobFile-------------- " + blobFile); 
     FileOutputStream outStream = new FileOutputStream(blobFile); 
     InputStream inStream = aBlob.getAsciiStream(); 

     int length = -1; 
     int size = (int) aBlob.length(); 
     byte[] buffer = new byte[size]; 

     while ((length = inStream.read(buffer)) != -1) { 
      outStream.write(buffer, 0, length); 
      outStream.flush(); 
     } 

     inStream.close(); 
     outStream.close(); 
+0

単にresultSet.getString( "CLOB_COLUMN")を使用すると、Clobの値が取得されます。 –

+0

これは機能していないようです。 PDFを読み込んでファイルに書き込むことができます。しかし、私がAdobe Readerを開くと、そのファイルが壊れていると言われています。私は同じ問題を読んで複数のファイルを開こうとしました。私は読んでみてもファイルを開くことは試みましたが、同じ問題です。 –

+0

Excelはバイナリ形式です。あなたはExcelファイルを格納するためにクローブを使用しません。間違ったデータ型を使用している場合は、データを読み上げることに焦点を当てて、この問題を混乱させます。私は、あなたがすでにPDFを文字ベースのファイル形式であると判断してから、PDFをクローブに格納することを選択したと仮定します。そうでない場合は、単にブロブをブロブとして読み込んで問題を修正することはできません。 –

答えて

0

です。 CLOBはテキスト形式です。つまり、そのデータベースは自動的に格納されたデータをデータベースの文字セットに変換します。 PDFはバイナリ形式なので、データベースに格納することによってファイルが破損している可能性があります。

ファイルをBLOB列に格納する必要があります。