DBCP - विभिन्न डेटाबेस के लिए सत्यापन


84

मैं DBCP पूल का उपयोग करें और मैं का उपयोग करना चाहते testOnBorrow और testOnReturn यदि कनेक्शन अभी भी मान्य है परीक्षण करने के लिए।
दुर्भाग्य से मुझे इसे काम करने के लिए प्रॉपर्टी वैलिडेशन® सेट करना होगा।

प्रश्न: वैधीकरण में क्या मूल्य होना चाहिए?

मुझे पता है, कि: सत्यापन एसक्यूएल चयन कथन होना चाहिए, जो कम से कम एक पंक्ति में लौटे।

समस्या यह है कि हम विभिन्न डेटाबेस (DB2, Oracle, hsqldb) का उपयोग करते हैं।


क्या सत्यापन का उपयोग करने से प्रदर्शन ख़राब नहीं होता है? यह क्वेरी हर कनेक्शन के लिए चलती है जो एप्लिकेशन को सही मिलती है?
यशवंत

जवाबों:


207

सभी डेटाबेस के लिए केवल एक ही वैधीकरण नहीं है। प्रत्येक डेटाबेस पर आपको अलग-अलग वैधीकरण का उपयोग करना होगा।

गुग्लिंग और परीक्षण के कुछ घंटों के बाद मैंने इस तालिका को एकत्र किया है:

डेटाबेस सत्यापन नोट

  • hsqldb -select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • Oracle -select 1 from dual
  • DB2 -select 1 from sysibm.sysdummy1
  • mysql -select 1
  • Microsoft SQL Server - select 1(SQL- सर्वर 9.0, 10.5 [2008] पर परीक्षण किया गया)
  • postgresql -select 1
  • इनग्रेस -select 1
  • डर्बी -values 1
  • H2 -select 1
  • फायरबर्ड -select 1 from rdb$database

मैंने अपने ब्लॉग पर इसके बारे में लिखा है - विभिन्न डेटाबेस के लिए सत्यापन क्वेरी

अग्रिम में वर्ग का एक उदाहरण है, जो जेडीबीसी चालक के अनुसार वैधीकरण लौटाता है।

या किसी के पास बेहतर समाधान है?


4
select 1 भी postgresql पर मान्य है
Danubian Sailor

select 1Microsoft SQL Server 2014 के लिए भी काम करता है - 12.0.2000.8 (X64), 20 फरवरी 2014 20:04:26, Windows NT 6.1 पर मानक संस्करण (64-बिट) 6.1 <X64> (7601 बनाएँ: सर्विस पैक 1) (हाइपरविजर)
यूसी

select 1हाइव और इम्पाला के लिए
davidemm

14

कनेक्टर / J ड्राइवर के साथ MySQL के लिए, एक हल्का सत्यापन क्वेरी है जो सर्वर पर केवल एक पिंग भेजता है और एक खराब परिणाम सेट करता है। सत्यापन क्वेरी निम्न स्ट्रिंग के साथ (या इससे शुरू होनी चाहिए) हो सकती है:

/* ping */

अधिक जानकारी के लिए MySQL ड्राइवर मैनुअल में मान्य कनेक्शन को देखें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.