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

JDBC में PreparedStatements, Statements से तेज़ क्यों हैं? समझाएं?


Statement ऑब्जेक्ट का उपयोग करके स्टेटमेंट निष्पादित करते समय, विशेष रूप से INSERT स्टेटमेंट, हर बार जब क्वेरी निष्पादित होती है तो पूरा स्टेटमेंट बार-बार संकलित और निष्पादित होता है, जहां इन स्टेटमेंट के बीच एकमात्र अंतर स्टेटमेंट के मान होते हैं।

जबकि, PreparedStatement एक पूर्व-संकलित स्टेटमेंट है यानी क्वेरी संकलित होकर डेटाबेस में संग्रहीत होती है, मानों के बजाय प्लेसहोल्डर (?) का उपयोग करके और इन प्लेसहोल्डर को मान बाद में प्रदान किए जाते हैं।

इस प्रकार, स्टेटमेंट के अनावश्यक संकलन और बार-बार निष्पादन से बचा जाता है।

उदाहरण

मान लें, हमारे पास डेटाबेस में Dataset नाम की एक टेबल है जिसमें mobile_brand और unit_sale कॉलम हैं, अगर हम Statement ऑब्जेक्ट का उपयोग करके इस टेबल में रिकॉर्ड डालना चाहते हैं तो कोड इस तरह होगा:

stmt.executeUpdate("insert into Dataset values('Iphone', 3000)"); stmt.executeUpdate("insert into Dataset values(&'Samsung', 4000)"); stmt.executeUpdate("insert into Dataset values('Nokia', 5000)"); stmt.executeUpdate("insert into Dataset values('Vivo', 1500)"); stmt.executeUpdate("insert into Dataset values('Oppo', 9000)"); stmt.executeUpdate("insert into Dataset values('MI', 6400)"); stmt.executeUpdate("insert into Dataset values('MotoG', 4360)"); stmt.executeUpdate("insert into Dataset values('Lenovo', 4100)"); stmt.executeUpdate("insert into Dataset values('RedMi', 4000)"); stmt.executeUpdate("insert into Dataset values('OnePlus', 6334)");

और हर executeUpdate() मेथड इनवोकेशन पर इसमें पूरा स्टेटमेंट संकलित और निष्पादित होता है। यहां, यदि आप देखें तो केवल स्टेटमेंट के मान बदल रहे हैं और शेष क्वेरी अनावश्यक रूप से संकलित हो रही है।

यदि आप उसी टेबल में समान डेटा डालने के लिए PreparedStatement का उपयोग करके INSERT क्वेरी लिखते हैं, तो कोड इस तरह दिखता है:

PreparedStatement pstmt = con.prepareStatement("insert into Dataset values(?, ?)"); pstmt.setString(1, "Iphone"); pstmt.setInt(2, 3000); pstmt.executeUpdate(); pstmt.setString(1, "Samsung"); pstmt.setInt(2, 4000); pstmt.executeUpdate(); pstmt.setString(1, "Nokia"); pstmt.setInt(2, 5000); pstmt.executeUpdate(); pstmt.setString(1, "Vivo"); pstmt.setInt(2, 1500); pstmt.executeUpdate(); pstmt.setString(1, "Oppo"); pstmt.setInt(2, 900); pstmt.executeUpdate(); pstmt.setString(1, "MI"); pstmt.setInt(2, 6400); pstmt.executeUpdate(); pstmt.setString(1, "MotoG"); pstmt.setInt(2, 4360); pstmt.executeUpdate(); pstmt.setString(1, "Lenovo"); pstmt.setInt(2, 4100); pstmt.executeUpdate(); pstmt.setString(1, "RedMi"); pstmt.setInt(2, 4000); pstmt.executeUpdate(); pstmt.setString(1, "MotoG"); pstmt.setInt(2, 4360); pstmt.executeUpdate(); pstmt.setString(1, "OnePlus"); pstmt.setInt(2, 6334); pstmt.executeUpdate();

यहां यदि आप देखें तो INSERT क्वेरी प्लेसहोल्डर (?) के साथ तैयार की गई है और यह क्वेरी संकलित होकर डेटाबेस में संग्रहीत होती है और बाद में PreparedStatement इंटरफ़ेस के सेटर मेथड का उपयोग करके मान पास किए जाते हैं, जिससे स्टेटमेंट के अनावश्यक निष्पादन से बचा जाता है।


  1. 5 कारण क्यों स्मार्टफोन डंब फोन से अधिक सुरक्षित हैं 5 कारण क्यों स्मार्टफोन डंब फोन से अधिक सुरक्षित हैं

    इंटरनेट कनेक्टिविटी, ब्लूटूथ, अधिक पोर्ट, GPS, और अनगिनत ऐप्स के जुड़ने के साथ, स्मार्टफोन गोपनीयता और सुरक्षा का बुरा सपना हैं। लेकिन डंब फोन पर स्विच करके आप अपनी स्थिति में जरूरी सुधार नहीं करेंगे। यहां पांच क्षेत्र हैं जहां सुरक्षा के मामले में स्मार्टफोन का ऊपरी हाथ है। 1. स्मार्टफोन एन्क्रिप्

  1. पासफ्रेज़ अभी भी पासवर्ड और फिंगरप्रिंट से बेहतर क्यों हैं पासफ्रेज़ अभी भी पासवर्ड और फिंगरप्रिंट से बेहतर क्यों हैं

    वो दिन याद हैं जब आप password को अपना पासवर्ड बनाते थे? कई लोग अभी भी ऐसे बेहद असुरक्षित तरीकों का उपयोग करते हैं, लेकिन साधारण पासवर्ड भी विकसित हुआ है। अब हम जहां भी जाते हैं पासकोड या पासफ्रेज़ का उपयोग करते हैं। वे आपके ऑनलाइन बैंकिंग, गेमिंग अकाउंट और डिवाइस को अनलॉक करते हैं। लेकिन कुछ लोगों क

  1. अपलोड गति डाउनलोड गति से इतनी धीमी क्यों होती है? अपलोड गति डाउनलोड गति से इतनी धीमी क्यों होती है?

    यदि आपने कभी अपने इंटरनेट पर स्पीड टेस्ट किया है, तो आपने शायद देखा होगा कि आपकी डाउनलोड गति की तुलना में, आपकी अपलोड गति, ठीक है, थोड़ी दयनीय है। आप अकेले नहीं हैं, हालांकि: यह दुनिया भर में बहुत अधिक मानक है। जुलाई 2018 के लिए Speedtest का विश्व औसत 46.41 Mbps डाउन, 22.48 अप था। विषमता क्यों? सामा