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

JDBC में CallableStatement क्या है?

<घंटा/>

कॉल करने योग्य विवरण इंटरफ़ेस संग्रहीत प्रक्रियाओं को निष्पादित करने के तरीके प्रदान करता है। चूंकि JDBC API एक संग्रहीत कार्यविधि SQL एस्केप सिंटैक्स प्रदान करता है, आप सभी RDBMS की संग्रहीत कार्यविधियों को एकल मानक तरीके से कॉल कर सकते हैं।

कॉल करने योग्य विवरण बनाना

आप CallableStatement . का एक ऑब्जेक्ट बना सकते हैं (इंटरफ़ेस) prepareCall() . का उपयोग करके कनेक्शन . की विधि इंटरफेस। यह विधि संग्रहीत कार्यविधि को कॉल करने के लिए एक क्वेरी का प्रतिनिधित्व करने वाले एक स्ट्रिंग चर को स्वीकार करती है और एक CallableStatement लौटाती है वस्तु।

कॉल करने योग्य कथन में इनपुट पैरामीटर, आउटपुट पैरामीटर या दोनों हो सकते हैं। प्रक्रिया कॉल में इनपुट पैरामीटर पास करने के लिए आप प्लेस होल्डर का उपयोग कर सकते हैं और CallableStatement इंटरफ़ेस द्वारा प्रदान की गई सेटर विधियों (setInt (), setString (), setFloat ()) का उपयोग करके इनके लिए मान सेट कर सकते हैं।

मान लीजिए कि आपके पास डेटाबेस में एक प्रक्रिया नाम myProcedure है, तो आप एक कॉल करने योग्य विवरण तैयार कर सकते हैं:

//एक CallableStatementCallableStatement तैयार करना cstmt =con.prepareCall("{call myProcedure(?,?, ?)}");

इनपुट पैरामीटर पर मान सेट करना

आप सेटर विधियों का उपयोग करके प्रक्रिया कॉल के इनपुट पैरामीटर में मान सेट कर सकते हैं।

ये दो तर्कों को स्वीकार करते हैं, एक इनपुट पैरामीटर के प्लेसमेंट इंडेक्स का प्रतिनिधित्व करने वाला एक पूर्णांक मान है और दूसरा एक int या, स्ट्रिंग या, फ्लोट इत्यादि है ... उस मान का प्रतिनिधित्व करता है जिसे आपको प्रक्रिया में asinput पैरामीटर पास करने की आवश्यकता होती है।

नोट: अनुक्रमणिका के बजाय आप पैरामीटर का नाम स्ट्रिंग प्रारूप में भी पास कर सकते हैं।

cstmt.setString(1, "राघव");cstmt.setInt(2, 3000);cstmt.setString(3, "Hyderabad");

कॉल करने योग्य विवरण निष्पादित करना

एक बार जब आप CallableStatement ऑब्जेक्ट बना लेते हैं, तो आप इसे execute() में से किसी एक का उपयोग करके निष्पादित कर सकते हैं। विधि।

cstmt.execute();

उदाहरण

मान लीजिए हमारे पास कर्मचारी . नाम की एक तालिका है निम्नलिखित डेटा के साथ MySQL डेटाबेस में:

<पूर्व>+------+--------+----------------+| नाम | वेतन | स्थान |+---------+----------+----------------+| अमित | 30000 | हैदराबाद || कल्याण | 40000 | विशाखापत्तनम || रेणुका | 50000 | दिल्ली || अर्चना | 15000 | मुंबई |+-----------+-----------+----------------+

और हमने इस तालिका में मान डालने के लिए myProcedure नाम की एक प्रक्रिया बनाई है जैसा कि नीचे दिखाया गया है:

प्रक्रिया बनाएं myProcedure (नाम VARCHAR(30), IN साल INT, IN loc VARCHAR(45)) -> BEGIN -> INSERT INTO Employee(Name, Salary, Location) VALUES (नाम, साल, लोक); -> अंत //

निम्नलिखित एक JDBC उदाहरण है जो कॉल करने योग्य कथन का उपयोग करके उपरोक्त बनाई गई प्रक्रिया को कॉल करके कर्मचारी तालिका में नए रिकॉर्ड सम्मिलित करता है।

आयात करें ड्राइवर का पंजीकरण करना DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // कनेक्शन प्राप्त करना स्ट्रिंग mysqlUrl ="jdbc:mysql://localhost/testdb"; कनेक्शन कॉन =DriverManager.getConnection (mysqlUrl, "रूट", "पासवर्ड"); System.out.println ("कनेक्शन स्थापित ......"); // एक कॉल करने योग्य स्टेटमेंट तैयार करना कॉल करने योग्य स्टेटमेंट cstmt =con.prepareCall ("{कॉल myProcedure (?,?,?)}"); cstmt.setString(1, "राघव"); cstmt.setInt(2, 3000); cstmt.setString(3, "हैदराबाद"); cstmt.setString(1, "कल्याण"); cstmt.setInt(2, 4000); cstmt.setString(3, "विशाखापत्तनम"); cstmt.setString(1, "रुक्मिणी"); cstmt.setInt(2, 5000); cstmt.setString(3, "दिल्ली"); cstmt.setString(1, "अर्चना"); cstmt.setInt(2, 15000); cstmt.setString(3, "मुंबई"); cstmt.execute (); System.out.println ("पंक्तियाँ डाली गई ...."); }}

आउटपुट

कनेक्शन स्थापित हो गया...पंक्तियां डाली गईं ....

यदि आप चयनित क्वेरी का उपयोग करके कर्मचारी तालिका की सामग्री को पुनः प्राप्त करते हैं, तो आप नीचे दिखाए गए नए जोड़े गए रिकॉर्ड देख सकते हैं:

mysql> कर्मचारी से * चुनें; नाम | वेतन | स्थान |+---------+----------+----------------+| अमित | 30000 | हैदराबाद || कल्याण | 40000 | विशाखापत्तनम || रेणुका | 50000 | दिल्ली || अर्चना | 15000 | मुंबई || राघव | 3000 | हैदराबाद || राघव | 3000 | हैदराबाद || कल्याण | 4000 | विशाखापत्तनम || रुक्मिणी | 5000 | दिल्ली || अर्चना | 15000 | मुंबई |+-----------+-----------+----------------+9 पंक्तियों में सेट (0.00 सेकंड)

  1. आईपी एड्रेस क्या है?

    एक आईपी पता, इंटरनेट प्रोटोकॉल पते के लिए संक्षिप्त, एक नेटवर्क से जुड़े नेटवर्क हार्डवेयर के लिए एक पहचान संख्या है। IP पता होने से डिवाइस को इंटरनेट जैसे IP-आधारित नेटवर्क पर अन्य उपकरणों के साथ संचार करने की अनुमति मिलती है। IP पता कैसा दिखता है? अधिकांश आईपी पते इस तरह दिखते हैं: 151.101.65.

  1. MySQL JDBC ड्राइवर कनेक्शन स्ट्रिंग क्या है?

    MySQL JDBC कनेक्शन स्ट्रिंग इस तरह दिखती है - Class.forName(com.mysql.jdbc.Driver); ऊपर, ड्राइवर एक इंटरफ़ेस है। जब भी आपका JDBC किसी एप्लिकेशन सर्वर के बाहर चल रहा होता है, तब क्लास DriverManager कनेक्शन स्थापित करता है। DriverManager वर्ग इस प्रकार है - conn = (Connection) DriverManager.getCo

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

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