CLOB सामान्य रूप से कैरेक्टर लार्ज ऑब्जेक्ट के लिए है, एक SQL क्लॉब एक अंतर्निहित डेटाटाइप है और इसका उपयोग बड़ी मात्रा में टेक्स्ट डेटा को स्टोर करने के लिए किया जाता है। इस डेटाटाइप का उपयोग करके, आप 2,147,483,647 वर्णों तक डेटा संग्रहीत कर सकते हैं।
java.sql.Clob JDBC API का इंटरफ़ेस CLOB डेटाटाइप का प्रतिनिधित्व करता है। चूंकि JDBC में क्लॉब ऑब्जेक्ट को SQL लोकेटर का उपयोग करके कार्यान्वित किया जाता है, यह SQL CLOB (डेटा नहीं) के लिए एक तार्किक सूचक रखता है।
MYSQL डेटाबेस चार चरों का उपयोग करके इस डेटाटाइप के लिए समर्थन प्रदान करता है।
-
टिनीटेक्स्ट: अधिकतम 28-1 (255) वर्णों वाला एक CLOB प्रकार।
-
पाठ: अधिकतम 216-1 (65535) वर्णों वाला एक CLOB प्रकार।
-
मध्यम पाठ: अधिकतम 224-1 (16777215) वर्णों वाला एक CLOB प्रकार।
-
लॉन्गटेक्स्ट: अधिकतम 232-1 (4294967295 ) वर्णों वाला एक CLOB प्रकार।
क्लोब डेटाटाइप को डेटाबेस में टोटलटेबल में स्टोर करना
क्लॉब डेटाटाइप को डेटाबेस में स्टोर करने के लिए, 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 Technologies(Name,Type, Article ) VALUES (?, ?, ?)");
चरण 3:प्लेस होल्डर्स के लिए मान सेट करें
PreparedStatement . की सेटर विधियों का उपयोग करके प्लेस होल्डर्स के लिए मान सेट करें इंटरफेस। कॉलम के डेटाटाइप के अनुसार विधियों को चुनें। उदाहरण के लिए यदि कॉलम VARCHAR प्रकार का है तो setString() विधि का उपयोग करें और यदि यह INT प्रकार का है तो आप setInt() विधि का उपयोग कर सकते हैं।
और यदि यह क्लॉब प्रकार का है तो आप setCharacterStream() या setClob() विधियों का उपयोग करके इसका मान सेट कर सकते हैं। इन विधियों के लिए पैरामीटर इंडेक्स और रीडर क्लास के ऑब्जेक्ट को पैरामीटर के रूप में प्रतिनिधित्व करने वाला एक पूर्णांक चर पास करें।
pstmt.setString(1, "JavaFX"); pstmt.setString(2, "Java Library"); FileReader Reader =new FileReader ("E:\\images\\javafx.txt");pstmt.setClob( 3, पाठक);pstmt.execute();
चरण 4:कथन निष्पादित करें
निष्पादित करें () . का उपयोग करके उपरोक्त निर्मित रेडीस्टेडमेंट ऑब्जेक्ट को निष्पादित करें तैयार विवरण . की विधि इंटरफ़ेस।
डेटाबेस से ब्लॉब पुनर्प्राप्त करना
ResultSet इंटरफ़ेस की getClob () विधि कॉलम की अनुक्रमणिका (या, कॉलम के नाम का प्रतिनिधित्व करने वाला एक स्ट्रिंग मान) का प्रतिनिधित्व करने वाला एक पूर्णांक स्वीकार करता है और निर्दिष्ट कॉलम पर मान पुनर्प्राप्त करता है और इसे क्लॉब ऑब्जेक्ट के रूप में देता है।
जबकि (rs.next ()) {System.out.println(rs.getString("Name")); System.out.println (rs.getString ("टाइप")); क्लॉब क्लॉब =rs.getClob("Article");}
getCharacterStream() क्लब . की विधि इंटरफ़ेस वर्तमान क्लॉब . की सामग्री पुनर्प्राप्त करता है वस्तु और एक पाठक . के रूप में वापस आती है वस्तु।
getClob() . का उपयोग करना विधि आप क्लॉब की सामग्री को रीडर ऑब्जेक्ट के रूप में प्राप्त कर सकते हैं और लिखें() का उपयोग करके पुनर्प्राप्त सामग्री के साथ टेक्स्ट फ़ाइल बना सकते हैं। FileOutputStream . की विधि वस्तु।
रीडर r =clob.getCharacterStream();char cbuf[] =new char[r.read()];r.read(cbuf);FileOutputStream outPutStream =newFileOutputStream("E:\\images\\clob_output"+ i+.txt");outPutStream.write(cbuf.toString().getBytes());
उदाहरण
निम्नलिखित उदाहरण MySQL डेटाबेस में एक क्लॉब डेटाटाइप के साथ एक टेबल बनाता है। किसी फ़ाइल से इसमें बड़ा टेक्स्ट डेटा सम्मिलित करता है। पाठ को वापस प्राप्त करता है और इसे किसी अन्य पाठ फ़ाइल में संग्रहीत करता है।
आयात करें तैयार स्टेटमेंट; आयात java.sql.ResultSet; आयात java.sql.Statement; सार्वजनिक वर्ग ClobExample {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग 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), टाइप VARCHAR (255), आर्टिकल लॉन्गटेक्स्ट)"); System.out.println ("टेबल बनाया गया ..."); // मान सम्मिलित करना स्ट्रिंग क्वेरी ="प्रौद्योगिकियों में सम्मिलित करें (नाम, प्रकार, लेख) मान (?,?,?)"; रेडीस्टेडमेंट pstmt =con.prepareStatement (क्वेरी); pstmt.setString(1, "JavaFX"); pstmt.setString(2, "जावा लाइब्रेरी"); FileReader रीडर =नया FileReader ("ई:\\images\\javafx.txt"); pstmt.setClob(3, पाठक); pstmt.execute (); pstmt.setString(1, "कॉफीस्क्रिप्ट"); pstmt.setString(2, "स्क्रिप्टिंग भाषा"); पाठक =नया फ़ाइल रीडर ("ई:\\ छवियां \\ कॉफीस्क्रिप्ट। टीएक्सटी"); pstmt.setClob(3, पाठक); pstmt.execute (); pstmt.setString(1, "कैसेंड्रा"); pstmt.setString(2, "NoSQL डेटाबेस"); पाठक =नया फ़ाइल रीडर ("ई:\\ छवियां \\ cassandra.txt"); pstmt.setClob(3, पाठक); pstmt.execute (); // डेटा प्राप्त करना ResultSet rs =stmt.executeQuery ("प्रौद्योगिकी से * चुनें"); इंट जे =0; System.out.println ("तालिका की सामग्री हैं:"); जबकि (rs.next ()) {System.out.println (rs.getString ("नाम")); क्लॉब क्लॉब =rs.getClob ("आर्टिकल"); रीडर आर =clob.getCharacterStream (); स्ट्रिंग फ़ाइलपाथ ="ई:\\डेटा\\clob_output"+j+.txt"; फाइलवाइटर लेखक =नया फाइलवाइटर (फाइलपाथ); इंट आई; जबकि ((i=r.read ())!=-1) {लेखक.लिखें(i); } लेखक। बंद करें (); System.out.println(filePath); जे++; } }}पूर्व>आउटपुट
कनेक्शन स्थापित...टेबल बनाया गया......तालिका की सामग्री हैं:JavaFXJava LibraryE:\images\clob_output1.txtCoffeeScriptScripting LanguageE:\images\clob_output2.txtCassandraNoSQL DatabaseE:\images\clob_output3.txt