सवाल जावा प्रोग्राम में SQL गणना () क्वेरी के मान को आप कैसे एक्सेस करते हैं


मैं एसक्यूएल के COUNT कमांड का उपयोग करके जो मूल्य ढूंढ रहा हूं उसे प्राप्त करना चाहता हूं। आम तौर पर मैं कॉलम नाम दर्ज करता हूं जिसे मैं getInt () getString () विधि में एक्सेस करना चाहता हूं, जब कोई विशिष्ट कॉलम नाम नहीं होता है तो मैं इस मामले में क्या करूँगा।

मैंने 'AS' का उपयोग उसी तरीके से किया है जैसा कि किसी तालिका को उपनाम करने के लिए उपयोग किया जाता है, मुझे यकीन नहीं है कि यह काम करने जा रहा है, तो मुझे नहीं लगता।

Statement stmt3 = con.createStatement();
ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) FROM "+lastTempTable+") AS count");
    while(rs3.next()){
    count = rs3.getInt("count");
    }

44
2018-05-04 07:53


मूल




जवाब:


उपनाम का प्रयोग करें:

SELECT COUNT(*) AS total FROM ..

और फिर

rs3.getInt("total")

75
2018-05-04 07:54



कम से कम मेरी तरफ से, rs3.getInt ("कुल") को कॉल करने से पहले इसे पहले rs3.next () को कॉल करने की आवश्यकता है - user2805346
धन्यवाद, मेरे पास आपसे कुछ पूछना है, क्या हम चैट कर सकते हैं? कृप्या - Suraj Jain


द्वारा प्रदान किए गए जवाब Bohzo तथा Brabster स्पष्ट रूप से काम करेगा, लेकिन आप भी इसका उपयोग कर सकते हैं:

rs3.getInt(1);

पहले में मूल्य प्राप्त करने के लिए, और आपके मामले में, केवल कॉलम।


40
2018-05-04 08:02



जावाडोक से: "कॉलम के इंडेक्स नंबर या कॉलम के नाम का उपयोग करके मूल्यों को पुनर्प्राप्त किया जा सकता है। आम तौर पर, कॉलम इंडेक्स का उपयोग करना अधिक कुशल होगा।" - Andrea Polci
अधिकांश अनुप्रयोगों के लिए प्रदर्शन ट्यूनिंग का यह स्तर वास्तव में महत्वपूर्ण नहीं है। कॉलम इंडेक्स का उपयोग करके आप अपने SQL क्वेरी में घूमने वाले कॉलम से त्रुटियों के बारे में बताते हैं, जो पता लगाना मुश्किल हो सकता है। इस विशेष उदाहरण में (केवल रिकॉर्ड गिनती को पकड़ना), यह कोई समस्या नहीं है, लेकिन यह एप्लिकेशन स्थिरता के लिए ध्यान में रखना कुछ है। - Peder Rice
@PederRicer अधिक सहमत नहीं हो सका। जब लोग स्पष्टता (लगभग हमेशा) कोड का मुख्य लक्ष्य होना चाहिए, तब तक लोग अक्सर माइक्रो-ऑप्टिमाइज़ेशन पर ध्यान केंद्रित करते हैं - Jonny Leeds


मैं इस प्रश्न को आपके कार्यक्रम के साथ काम करने की उम्मीद करूंगा:

"SELECT COUNT(*) AS count FROM "+lastTempTable+")"

(आपको स्तंभ को उपनाम करने की आवश्यकता है, तालिका नहीं)


4
2018-05-04 07:55





मैंने इसे इस तरह से किया है (उदाहरण):

String query="SELECT count(t1.id) from t1, t2 where t1.id=t2.id and t2.email='"r@r.com"'";
int count=0;
try {
    ResultSet rs = DatabaseService.statementDataBase().executeQuery(query);
    while(rs.next())
        count=rs.getInt(1);
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    //...
}

2
2018-05-12 09:11



मैंने वही काम किया लेकिन मुझे NullPointerException () मिल रहा है, क्या आप मदद कर सकते हैं? - Shubham Arya


Statement stmt3 = con.createStatement();

ResultSet rs3 = stmt3.executeQuery("SELECT COUNT(*) AS count FROM "+lastTempTable+" ;");

count = rs3.getInt("count");

1
2017-08-20 10:33



परिणाम सेट शुरू करने के लिए आपको अगली () विधि कॉल करने की आवश्यकता है। जैसे जबकि (recSet.next ()) {num = recSet.getInt ("..."); } - Hatim


यह उपरोक्त जैसा है लेकिन आप ऐसा करने की कोशिश कर सकते हैं

public Integer count(String tableName) throws CrateException {
        String query = String.format("Select count(*) as size from %s", tableName);
        try (Statement s = connection.createStatement()) {
            try (ResultSet resultSet = queryExecutor.executeQuery(s, query)) {
                Preconditions.checkArgument(resultSet.next(), "Result set is empty");
                return resultSet.getInt("size");
            }
        } catch (SQLException e) {
            throw new CrateException(e);
        }
    }
}

0
2017-07-25 13:35