2013-05-09 21 views
6

Şu anda DB2 için Oracle üzerinde geliştirilmiş bir uygulamayı doğrulıyorum. İki ayrı kaynağı korumak istemediğimizden, bloğa bir alana blob eklemek için biraz sorguya ihtiyacım var. Bu, hem Oracle hem de db2'de çalışıyor. Uygulamanın çalıştığı DB'yi ayırt etmek için herhangi bir tanımlamam yok.Hem DB2 hem de Oracle için java'yı kullanarak BLOB'u ekleyin

Oracle'da utl_raw.cast_to_raw ve DB2'de karşılıklı olarak uyumsuz olan CAST() as BLOB kullanıyorum.

cevap

6

Bir tür döküm kullanan yaygın bir SQL bulamayacaksınız. Ama sen bir UPDATE ifadesiyle JDBC en setBinaryStream()

PreparedStatement pstmt = connection.prepareStatement(
    "insert into blob_table (id, blob_data) values (?, ?)"; 

File blobFile = new File("your_document.pdf"); 
InputStream in = new FileInputStream(blobFile); 

pstmt.setInt(1, 42); 
pstmt.setBinaryStream(2, in, (int)blobFile.length()); 
pstmt.executeUpdate(); 
connection.commit(); 

kullanabilirsiniz setBinaryStream() aynı şekilde kullanarak "düz" SQL ile bunu yapabilirsiniz.

+0

Veriler, String türünde bir değişken içerisindeyim. Yukarıdaki yöntemi, String'i BinaryStream'e dönüştürerek kullanmak güzel midir? – Saju

+0

@Saju: Dize olarak * binary * büyük nesneye nasıl sahip olabilirsiniz? Bu sütun için gerçek (ör. Oracle) veri türü nedir? Bu bir "CLOB" ise ('BLOB' yerine)' setBinaryStream() 'setCharacterStream()' yerine –

+0

kullanmalıdır. Belki de @Saju, Oracle'da NCLOB, DB2'de DBCLOB anlamına gelir. – WarrenT

İlgili konular