2011-11-07 17 views
5

Sana rekor setleri ile uğraşmak gerekirse gayet benim veritabanına erişen bir içerik sağlayıcı var ama bir tablodaki kayıtların sayısını gösteren bir tamsayı dönmek için bir yöntem gerekir yöntem buİçerik sağlayıcıda Android özel yöntem tablodaki kayıt sayısını almak için?

benziyor

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; 
} 

Ancak bu yöntemi kullanmanın en iyi yolu nerede ve nasıl arayacağınızı bu şekilde kullanmanın herhangi bir yolunu (veya bu konuda bir imleç döndürmeyen başka bir yöntem) bulamıyorum. ?

Açıkçası ben yönetilen bir sorgu ile tüm kayıtları seçip cursor.count sonucu kullanmanın gerçekten kötü bir seçenek yapabilirdi ama bu

Teşekkür

cevap

10

Ayrıca sadece kullanabilirsiniz "sayımı (*)"

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

bu özel şartı ile uğraşan biri derece verimsiz bir yoldur Erişebildiğiniz bir yöntem, ContentResolver sınıfındaki call() yöntemini kullanmaktır. Google'da bunu nasıl kullanacağımız hakkında pek fazla şey göremiyorum. Ancak tahminim, getRecordCount() ürününüzün sonucunu içeren bir paket döndürmeniz gerektiğidir. Tabi ki yapılacak en kolay şey, bu SO Post sayılı belgede anlatılanlar gibi bir şey olurdu.

+0

teşekkür ederiz aşağıdaki yardımcı yönteminde olduğu gibi içerik sağlayıcılar URI'lerinin bir çağrı bir çıkıntı olarak, bu diğer bir dizi soru açılıyor Önerilen çözümün nasıl uygulanacağıyla ilgili bir örnek varsa en iyi şekilde cevap verilebilir. Özellikle, döndürülen paketten değeri alma ve değeri grup sınıfı sonucuna nasıl koyma. Beni bu yöntemin kullanım örneğine yönlendirirseniz, gerçekten bu yöntemi nasıl kullanacağımı bulmakta zorlanıyorum – jamesc

+0

. Diğer öneriler için benim düzenlenmiş cevabımı görün. –

+0

lol! Kendi başıma değil :) - Sanırım yönetilen bir sorgu kullanabilir, yeni bir uri kurabilir ve seçim sayımının sonucunu alabilirim * bir imleci döndürür - Simples çözümüne benziyor. Yardımınız için teşekkürler. – jamesc

İlgili konular