2011-11-07 7 views
5

मैं एक सामग्री प्रदाता है कि मेरे डेटाबेस जो ठीक है आप रिकॉर्ड सेट से निपटने के लिए की जरूरत है पहुँचता है, लेकिन मैं एक विधि की जरूरत है एक तालिका में एक पूर्णांक अभिलेखों की संख्या दर्शाने वापस जाने के लिएसामग्री प्रदाता में तालिका में रिकॉर्ड की संख्या प्राप्त करने के लिए एंड्रॉइड कस्टम विधि?

विधि इस

तरह लग रहा है
public long getRecordCount(String TableName) { 
    SQLiteDatabase mDatabase = mOpenHelper.getReadableDatabase(); 
    String sql = "SELECT COUNT(*) FROM " + TableName; 
    SQLiteStatement statement = mDatabase.compileStatement(sql); 
    long count = statement.simpleQueryForLong(); 
    return count; 
} 

लेकिन मैं सामग्री प्रदाता में इस (या किसी अन्य विधि जो कर्सर को वापस नहीं करता) का उपयोग करने का कोई तरीका नहीं ढूंढ पा रहा हूं, इसलिए इस विधि को रखने के लिए सबसे अच्छी जगह कहां है और इसे कैसे कॉल करें ?

जाहिर है मैं एक कामयाब क्वेरी के साथ सभी रिकॉर्ड का चयन करके और cursor.count परिणाम का उपयोग करने का वास्तव में बुरा विकल्प कर सकता है लेकिन यह है कि इस विशिष्ट आवश्यकता के साथ काम कर

धन्यवाद

उत्तर

10

तुम भी बस का उपयोग कर सकते "गिनती (*)" अपनी सामग्री प्रदाताओं यूआरआई के लिए एक कॉल में एक प्रक्षेपण, निम्नलिखित सहायक विधि

public static int count(Uri uri,String selection,String[] selectionArgs) { 
    Cursor cursor = getContentResolver().query(uri,new String[] {"count(*)"}, 
     selection, selectionArgs, null); 
    if (cursor.getCount() == 0) { 
    cursor.close(); 
    return 0; 
    } else { 
    cursor.moveToFirst(); 
    int result = cursor.getInt(0); 
    cursor.close(); 
    return result; 
    } 
} 
1

में से एक बेहद अक्षम तरीका है ContentResolver क्लास में call() विधि का उपयोग करके आप इसे एक्सेस कर सकते हैं। मुझे वास्तव में Google पर इसका उपयोग करने के बारे में बहुत कुछ नहीं लगता है, लेकिन मेरा अनुमान है कि आपको अपने getRecordCount() में अपने परिणाम के साथ एक बंडल वापस करना चाहिए। बेशक करना आसान बात यह है कि इस SO Post में वर्णित कुछ ऐसा होगा।

+0

धन्यवाद के रूप में के रूप में, यह ऊपर अन्य प्रश्न के एक नंबर को खोलता है यदि आपके सुझाए गए समाधान को कार्यान्वित करने का एक उदाहरण था तो इसका सबसे अच्छा जवाब दिया जाएगा। विशेष रूप से लौटा बंडल से मूल्य कैसे प्राप्त करें और मूल्य को बंडल क्लास परिणाम में कैसे रखा जाए। यदि आप मुझे इस विधि के उपयोग उदाहरण की दिशा में इंगित कर सकते हैं तो मैं वास्तव में इसकी सराहना करता हूं – jamesc

+0

मुझे विधि का उपयोग करने के तरीके को ठीक करने में भी समस्या हो रही है। कुछ अन्य सुझावों के लिए मेरी संपादित प्रतिक्रिया देखें। –

+0

लॉल! मेरे अपने समय पर नहीं :) - मुझे लगता है कि मैं एक प्रबंधित क्वेरी का उपयोग कर सकता हूं, एक नया यूरी स्थापित कर सकता हूं और चयन गिनती का परिणाम प्राप्त कर सकता हूं * एक कर्सर लौटाएं - सिम्प्लेक्स समाधान की तरह लगता है। आपकी सहायता के लिए धन्यवाद – jamesc