Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

JDBC ब्लॉब डेटा प्रकार क्या है? इससे डेटा कैसे स्टोर और पढ़ा जाए?

<घंटा/>

एक 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

  1. एंड्रॉइड स्क्लाइट में ब्लॉब डेटा प्रकार का उपयोग कैसे करें?

    उदाहरण में आने से पहले, हमें पता होना चाहिए कि एंड्रॉइड में एसक्लाइट डेटा बेस क्या है। SQLite एक ओपन सोर्स SQL ​​डेटाबेस है जो किसी डिवाइस पर टेक्स्ट फ़ाइल में डेटा स्टोर करता है। Android अंतर्निहित SQLite डेटाबेस कार्यान्वयन के साथ आता है। SQLite सभी रिलेशनल डेटाबेस सुविधाओं का समर्थन करता है। इस ड

  1. JDBC में रिजल्ट क्या है? ResultSet ऑब्जेक्ट से डेटा कैसे प्राप्त करें?

    एक परिणाम सेट JDBC में इंटरफ़ेस SQL ​​क्वेरी द्वारा उत्पन्न सारणीबद्ध डेटा का प्रतिनिधित्व करता है। इसमें एक कर्सर होता है जो वर्तमान पंक्ति की ओर इशारा करता है। प्रारंभ में, यह कर्सर पहली पंक्ति से पहले स्थित होता है। सूचकांक को पूरे परिणाम सेट में ले जाना अगला () ResultSet इंटरफ़ेस . की विधि व

  1. विंडोज सर्वर क्या है और यह विंडोज से कैसे अलग है?

    विंडोज ओएस ऑपरेटिंग सिस्टम मार्केट शेयर के एक बड़े हिस्से पर कब्जा कर लेता है। इस प्रकार, इसे सबसे लोकप्रिय ऑपरेटिंग सिस्टमों में से एक माना जा सकता है। यह ओएस को दो प्रमुख रूपों में पेश करता है, डेस्कटॉप के लिए विंडोज़ विंडोज सर्वर Microsoft Windows Server 2022, Windows 11 का नवीनतम सर्वर संस्क