2013-05-09 5 views
6

दोनों के लिए जावा का उपयोग करके बीएलओबी डालें मैं वर्तमान में ओरेकल पर डीबी 2 के लिए विकसित एक एप्लीकेशन को मान्य कर रहा हूं। चूंकि हम दो अलग-अलग स्रोतों को बनाए रखना नहीं चाहते हैं, इसलिए मुझे किसी क्षेत्र में ब्लॉब डालने के लिए कुछ प्रश्न चाहिए, जो ऑरैकल और डीबी 2 दोनों में काम करता है। मेरे पास अंतर करने के लिए कोई पहचानकर्ता नहीं है जिसके तहत आवेदन डीबी चल रहा है।डीबी 2 और ओरेकल

मैंने ओआरएकल में utl_raw.cast_to_raw और डीबी 2 में CAST() as BLOB का उपयोग किया जो पारस्परिक रूप से असंगत हैं।

उत्तर

6

आप किसी सामान्य SQL को खोजने में सक्षम नहीं होंगे जो किसी प्रकार का कास्टिंग उपयोग करता है। लेकिन अगर आप एक UPDATE बयान के साथ JDBC के 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(); 

आप उपयोग कर सकते हैं setBinaryStream() उसी तरह का उपयोग कर "सादे" एसक्यूएल के साथ ऐसा कर सकते हैं।

+0

मेरे पास स्ट्रिंग के प्रकार के चर के अंदर डेटा है। स्ट्रिंग को बाइनरीस्ट्रीम में परिवर्तित करके उपर्युक्त विधि का उपयोग करना ठीक है ?? – Saju

+0

@ सजू: स्ट्रिंग के रूप में आपके पास * बाइनरी * बड़ी वस्तु कैसे हो सकती है? उस कॉलम के लिए वास्तविक (उदा। ओरेकल) डेटाटाइप क्या है? यदि वह 'सीएलओबी' है ('बीएलओबी' के बजाए) तो आपको 'सेटबाइनरीस्ट्रीम()' –

+0

के बजाय' सेट कैरेक्टरस्ट्रीम() 'का उपयोग करना चाहिए, शायद @ सजू का अर्थ है ओआरकल में एनसीएलओबी, डीबीसीएलबी डीबी 2 में। – WarrenT