2011-07-21 11 views
10

टाइप टेक्स्ट (एक MySQL डीबी में) के कॉलम के लिए PreparedStatement की setObject विधि का उपयोग करते समय, अंतिम पैरामीटर क्या होना चाहिए?java.sql.Types MySQL टेक्स्ट के बराबर क्या है?

उदाहरण के लिए, मुझे पता है कि यह एक VARCHAR स्तंभ के लिए ठीक है:

stmt.setObject(i, "bla", Types.VARCHAR);

जहां stmt एक PreparedStatement है, और Typesjava.sql.Types है।

लेकिन यदि डीबी कॉलम का प्रकार टेक्स्ट है, तो क्या मुझे अभी भी VARCHAR का उपयोग करना चाहिए? या शायद बीएलओबी, या सीएलओबी?

+1

FYI: आप ['DatabaseMetaData.getColumns'] (http://download.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getColumns%28java का उपयोग करके इस जानकारी को प्राप्त कर सकते हैं। lang.String,% 20java.lang.String,% 20java.lang.String,% 20java.lang.String% 29) विधि। आप 'connection.getMetaData()' को कॉल करके 'डेटाबेस मेटाडेटा' ऑब्जेक्ट प्राप्त कर सकते हैं। 'GetColumns' द्वारा लौटाए गए 'परिणामसेट' में 'DATA_TYPE' नामक 'int' कॉलम है जो आप खोज रहे हैं। –

उत्तर

7

जवाब (हाँ, आप VARCHAR का उपयोग करने के लिए हैं) यहां पाया जा सकता:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html (अद्यतन पुरानी टूट लिंक)

और यहाँ MYSQL TEXT प्रकार

के बारे में कुछ जानकारी है http://dev.mysql.com/doc/refman/5.0/en/blob.html

+0

धन्यवाद। मैं उन पृष्ठों पर गया हूं, और मुझे यकीन नहीं था कि 'GetColumnClassName' वापसी मूल्य मुझे आवश्यक था, इसलिए यह स्पष्ट करने के लिए धन्यवाद :) –

+3

प्रासंगिक जानकारी को केवल लिंक से बदले में प्रश्न में पोस्ट किया जाना चाहिए ... –

1

तुम क्यों इस्तेमाल नहीं करते

stmt.setString ? 
पाठ प्रकार के लिए 210

? http://download.oracle.com/javase/1.4.2/docs/api/java/sql/PreparedStatement.html#setString(int, java.lang.String)

+0

इसका कारण यह है कि मैंने एक सामान्य कार्य लिखा है, जो 'सेल' (एक वर्ग मैंने लिखा है) की एक सरणी प्राप्त करता है, और प्रत्येक सेल में 'ऑब्जेक्ट' मान होता है और एक int जो कॉलम प्रकार की पहचान करता है। –

0

कोई पाठ क्षेत्र यहाँ Oracle Doc for sql Types है, लेकिन यह (भविष्य में दिखाई दे सकते हैं अब आप जानकारी का उपयोग कर सकते है कि आकार 21,845 एक कार्यान्वयन हार्डकोडेड चाल के रूप में है - अगर आप जानना चाहते हैं बाद में यह टेक्स्ट फ़ील्ड है - वास्तविक फ़ील्ड आकार कुछ ऐसा है जिसे आप चुनते हैं और बाकी पाठ को MySQL द्वारा कहीं और याद किया जाता है)

तो "वर्चर के रूप में उपयोग के प्रकार" के साथ पहला जवाब काम कर रहा है (शायद लाइब्रेरी एक बनाता है सेटस्ट्रिंग कॉल)

उत्तर "सेटस्ट्रिंग" भी काम कर रहा है (एक स्विच (field_type) से पहले यदि आप अपने आप से निर्णय लेना चाहते हैं - मैं ई कोड को आसान तरीके से डीबग करने के लिए यह विकल्प - गति दोनों मामलों में लागत = स्विच + सेटस्ट्रिंग जैसी ही है)

सभी लिंक और पुष्टि के लिए धन्यवाद!

संबंधित मुद्दे