2010-04-19 17 views
8

मेरे पास एक परिणामसेट ऑब्जेक्ट है जिसमें एक एसक्यूएल क्वेरी से लौटाई गई सभी पंक्तियां हैं।java.sql.ResultSet से केवल पहली पंक्ति कैसे प्राप्त करें?

मैं एक परिणामसेट लेने और इसे बदलने में सक्षम होने के लिए (जावा कोड में, इसे एसक्यूएल में मजबूर नहीं कर सकता) में सक्षम होना चाहता हूं ताकि इसमें केवल 1 (पहली) पंक्ति हो।

इसे स्वीकार करने का तरीका क्या होगा? साथ ही, क्या मेरे परिणामसेट को ट्रिम करने के बजाए सिर्फ एक पंक्ति को संग्रहित करने के लिए कोई और उचित वर्ग (java.sql या कहीं और में) है?

धन्यवाद!

+2

एसक्यूएल में क्यों नहीं? – gbn

उत्तर

15

सिर्फ एक result set में पंक्तियों की संख्या को सीमित करने के उद्देश्य आप निम्न कर सकते के लिए:

String yourQuery = "select * from some_table"; 
PreparedStatement statement = connection.prepareStatement(yourQuery); 
statement.setMaxRows(1); 
rs = statement.executeQuery(); 

एक विशिष्ट वर्ग है कि केवल एक पंक्ति पकड़ सकता है का सवाल है, यह वास्तव में आप क्या पर निर्भर करता है डेटा के साथ करना चाहते हैं। उदाहरण के लिए आप result set की सामग्री निकालें और उन्हें सरणी में स्टोर करें, या यदि आपको नामों की आवश्यकता है और map मानों की आवश्यकता है। यदि आप जेनेरिक डेटा स्ट्रक्चर के बजाए किसी विशिष्ट ऑब्जेक्ट के साथ काम करेंगे तो आप पीओजेओ में डेटा भी पढ़ सकते हैं।

5

देखें Statement.setMaxRows

+0

ऐसा लगता है कि मुझे क्या चाहिए - क्या आप कृपया मुझे एक उदाहरण दिखा सकते हैं कि मैं मौजूदा परिणामसेट (संभवतः कई पंक्तियों को रखने) के लिए इसका उपयोग कैसे करूं और इसे संशोधित कर सकता हूं (या एक नया परिणामसेट बना सकता हूं) जिसमें केवल पहली पंक्ति है? मैं इस बारे में उलझन में हूं कि मैं इसका उपयोग कैसे करूंगा कि परिणामसेट ऑब्जेक्ट पहले से ही बनाया गया है। धन्यवाद – llm

+0

@llm कथन निष्पादित होने से पहले आप मौजूदा परिणामसेट पर ऐसा क्यों करना चाहते हैं? आप केवल वही डेटा लौटने के लिए क्वेरी को अनुकूलित करने वाले ड्राइवर की संभावना खो देते हैं। – ig0774

4

आप दुकान डेटा की एक पंक्ति की जरूरत संदर्भ, जिस स्थिति में मैं कहना चाहता हूँ कि एक ResultSet का उपयोग कर शायद एक बुरा विचार है, क्योंकि यह आम तौर पर डेटाबेस संसाधनों का उपभोग हो जाएगा बंद होने तक (उदाहरण के लिए अंतर्निहित java.sql.Connection)।

इसके बजाय मैं आपके ResultSet की पहली पंक्ति को POJO में पढ़ने की अनुशंसा करता हूं, शायद यह संक्षेप में प्राप्त करने के लिए स्प्रिंग की जेडीबीसी उपयोगिता कक्षाओं (उदा। RowMapper) का उपयोग कर। इसके तुरंत बाद, बंदResultSet और संबंधित Statement और Connection (या वसंत को आपके लिए ऐसा करने की अनुमति दें)।

0

SQLite में आप पंक्तियों की संख्या सीमित कर सकते हैं कर रहे:

"SELECT * FROM YOURTABLE ORDER BY YOURCOLUMN ASC LIMIT 3 OFFSET 3; 

जहां सीमा आप चाहते पंक्तियों की संख्या और जहाँ आप शुरू करना चाहते से rownumber ऑफसेट है।

http://www.sqlitetutorial.net/sqlite-limit/

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