एक BLOB द्विआधारी बड़ी वस्तु है जो अधिकतम 65535 वर्णों के साथ डेटा की एक चर मात्रा को धारण कर सकती है।
इनका उपयोग बड़ी मात्रा में बाइनरी डेटा, जैसे कि चित्र या अन्य प्रकार की फ़ाइलों को संग्रहीत करने के लिए किया जाता है। TEXT के रूप में परिभाषित फ़ील्ड में भी बड़ी मात्रा में डेटा होता है। दोनों के बीच अंतर यह है कि संग्रहीत डेटा पर प्रकार और तुलना बीएलओबी पर केस संवेदनशील होते हैं और टेक्स्ट फ़ील्ड में केस संवेदनशील नहीं होते हैं। आप BLOB या TEXT के साथ लंबाई निर्दिष्ट नहीं करते हैं।
ब्लॉब को डेटाबेस में स्टोर करना
ब्लॉब डेटाटाइप को डेटाबेस में स्टोर करने के लिए, JDBC प्रोग्राम का उपयोग करके नीचे दिए गए चरणों का पालन करें
चरण 1:डेटाबेस से कनेक्ट करें
आप getConnection() . का उपयोग करके डेटाबेस से जुड़ सकते हैं ड्राइवर प्रबंधक . की विधि कक्षा।
jdbc:mysql://localhost/sampleDB MySQL URL पास करके MySQL डेटाबेस से कनेक्ट करें (जहां नमूनाडीबी डेटाबेस नाम है), उपयोगकर्ता नाम और पासवर्ड getConnection() विधि के पैरामीटर के रूप में।
स्ट्रिंग mysqlUrl ="jdbc:mysql://localhost/sampleDB";कनेक्शन con =DriverManager.getConnection(mysqlUrl, "root", "password");
चरण 2:एक तैयार कथन बनाएं
prepareStatement() . का उपयोग करके एक तैयार स्टेटमेंट ऑब्जेक्ट बनाएं कनेक्शन . की विधि इंटरफेस। इस विधि के लिए एक पैरामीटर के रूप में सम्मिलित क्वेरी (प्लेस होल्डर के साथ) पास करें।
PreparedStatement pstmt =con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
चरण 3:प्लेस होल्डर्स के लिए मान सेट करें
PreparedStatement . की सेटर विधियों का उपयोग करके प्लेस होल्डर्स के लिए मान सेट करें इंटरफेस। कॉलम के डेटाटाइप के अनुसार विधियों को चुनें। उदाहरण के लिए यदि कॉलम VARCHAR प्रकार का है तो setString() विधि का उपयोग करें और यदि यह INT प्रकार का है तो आप setInt() विधि का उपयोग कर सकते हैं।
और यदि यह ब्लॉब प्रकार का है तो आप setBinaryStream() या setBlob() विधियों का उपयोग करके इसका मान सेट कर सकते हैं। इन विधियों के लिए पैरामीटर इंडेक्स का प्रतिनिधित्व करने वाला एक पूर्णांक चर और पैरामीटर के रूप में इनपुटस्ट्रीम क्लास का ऑब्जेक्ट पास करें।
pstmt.setString(1, "sample image");//ब्लॉब टाइपइनपुटस्ट्रीम को =new FileInputStream("E:\\images\\cat.jpg");pstmt.setBlob(2, in);में सम्मिलित करना पूर्व>चरण 4:कथन निष्पादित करें
निष्पादित करें () . का उपयोग करके उपरोक्त निर्मित रेडीस्टेडमेंट ऑब्जेक्ट को निष्पादित करें तैयार विवरण . की विधि इंटरफ़ेस।
डेटाबेस से ब्लॉब पुनर्प्राप्त करना
ResultSet इंटरफ़ेस की getBlob () विधि कॉलम की अनुक्रमणिका (या, कॉलम के नाम का प्रतिनिधित्व करने वाला एक स्ट्रिंग मान) का प्रतिनिधित्व करने वाला एक पूर्णांक स्वीकार करता है और निर्दिष्ट कॉलम पर मान पुनर्प्राप्त करता है और इसे ब्लॉब ऑब्जेक्ट के रूप में देता है।
जबकि (rs.next ()) {rs.getString("Name"); rs.getString ("टाइप"); बूँद बूँद =rs.getBlob("लोगो");}getBytes() ब्लॉब . की विधि इंटरफ़ेस वर्तमान ब्लॉब . की सामग्री पुनर्प्राप्त करता है ऑब्जेक्ट और बाइट ऐरे के रूप में वापस आता है।
getBlob() . का उपयोग करना विधि आप बूँद की सामग्री को एक बाइट सरणी में प्राप्त कर सकते हैं और लिखें () का उपयोग करके एक छवि बना सकते हैं FileOutputStream . की विधि वस्तु।
बाइट बाइटअरे [] =blob.getBytes(1,(int)blob.length());FileOutputStream outPutStream =new FileOutputStream("path");outPutStream.write(byteArray);उदाहरण
निम्नलिखित उदाहरण ब्लॉब डेटाटाइप के साथ MySQL डेटाबेस में एक तालिका बनाता है, इसमें छवि सम्मिलित करता है। इसे वापस प्राप्त करता है और स्थानीय फाइल सिस्टम में संग्रहीत करता है।
आयात करें परिणामसेट; आयात java.sql.Statement; सार्वजनिक वर्ग BlobExample {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) अपवाद फेंकता है {// ड्राइवर DriverManager.registerDriver को पंजीकृत करना (नया com.mysql.jdbc.Driver ()); // कनेक्शन प्राप्त करना स्ट्रिंग mysqlUrl ="jdbc:mysql://localhost/sampleDB"; कनेक्शन कॉन =DriverManager.getConnection (mysqlUrl, "रूट", "पासवर्ड"); System.out.println ("कनेक्शन स्थापित ......"); // एक टेबल स्टेटमेंट बनाना stmt =con.createStatement (); stmt.execute ("टेबल सैंपलटेबल बनाएं (नाम VARCHAR (255), इमेज BLOB)"); System.out.println ("टेबल बनाया गया"); // मान सम्मिलित करना स्ट्रिंग क्वेरी ="नमूना तालिका में सम्मिलित करें (नाम, छवि) मान (?,?)"; रेडीस्टेडमेंट pstmt =con.prepareStatement (क्वेरी); pstmt.setString(1, "नमूना छवि"); FileInputStream फिन =नया FileInputStream ("ई:\\ छवियां \\ cat.jpg"); pstmt.setBlob(2, फिन); pstmt.execute (); // डेटा प्राप्त करना परिणामसेट आरएस =stmt.executeQuery ("नमूनाटेबल से चुनें *"); इंट मैं =1; System.out.println ("तालिका की सामग्री हैं:"); जबकि (rs.next ()) {System.out.println (rs.getString ("नाम")); बूँद बूँद =rs.getBlob ("छवि"); बाइट बाइटअरे [] =blob.getBytes(1,(int)blob.length()); FileOutputStream outPutStream =new FileOutputStream ("ई:\\ images \\ blob_output" + i + ".jpg"); outPutStream.write(byteArray); System.out.println ("ई:\\ छवियां \\ blob_output" + i + ".jpg"); System.out.println (); मैं++; } }}पूर्व>आउटपुट
कनेक्शन स्थापित...टेबल बनाया गयाटेबल की सामग्री हैं:नमूना imageE:\images\blob_output1.jpg