2013-03-29 37 views
1

我想要做的是通過我的內容提供商使用SUM查詢。到目前爲止,我還沒有做到這一點。通過內容提供商使用求和查詢

我的內容提供商有一個名爲credit score的列。我想要做的是拉取數據並將它們加在一起以產生特定人員的最終分數,即以約翰史密斯爲名的每一行,添加信用評分列中列出的數量。

我找到了一些解決方案,但似乎沒有任何工作。我已經閱讀了stackoverflow,它不能通過內容解析器無法執行的原始查詢來完成。

這是已使用的代碼:

ContentProviderClient client = getContentResolver().acquireContentProviderClient(AUTHORITY); 
    SQLiteDatabase dbHandle= ((BorrowMeContentProvider)client.getLocalContentProvider()).getDbHandle(); 
    Cursor cursor = dbHandle.rawQuery("SELECT sum("+BorrowMeTable.COLUMN_CREDIT_SCORE+") FROM "+BorrowMeTable.DATABASE_TABLE +" WHERE "+BorrowMeTable.COLUMN_NAME+"= \""+ nameOfThePersonString+"\"", null); 
    cursor.moveToFirst(); 
    int cnt = cursor.getInt(0); 
    cursor.close(); 
    cursor.deactivate(); 
    client.release(); 

利用這一點,我認爲具有與getDbHandle()做時,我得到一個錯誤 - 這個方法在我的內容提供商要創建(因爲它不存在),但它返回null。

這是錯誤我得到:

03-29 16:16:24.369: E/AndroidRuntime(28802): FATAL EXCEPTION: main 
03-29 16:16:24.369: E/AndroidRuntime(28802): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fthatnoise.borrow.me/com.fthatnoise.borrow.me.PersonRecord}: java.lang.NullPointerException 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.ActivityThread.access$700(ActivityThread.java:139) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.os.Looper.loop(Looper.java:137) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.ActivityThread.main(ActivityThread.java:4918) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at java.lang.reflect.Method.invokeNative(Native Method) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at java.lang.reflect.Method.invoke(Method.java:511) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at dalvik.system.NativeStart.main(Native Method) 
03-29 16:16:24.369: E/AndroidRuntime(28802): Caused by: java.lang.NullPointerException 
03-29 16:16:24.369: E/AndroidRuntime(28802): at com.fthatnoise.borrow.me.PersonRecord.fillData(PersonRecord.java:90) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at com.fthatnoise.borrow.me.PersonRecord.onCreate(PersonRecord.java:52) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.Activity.performCreate(Activity.java:5048) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
03-29 16:16:24.369: E/AndroidRuntime(28802): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052) 

我在正確的軌道上或大錯特錯?

回答

0

與以前添加creditcardtotal在查詢

+0

您好,感謝回答,我嘗試添加它,它仍然給我的錯誤信息。 – Vince

+0

線90是什麼?在logcat中雙擊com.fthatnoise.borrow.me.PersonRecord.fillData(PersonRecord.java:90) –

+0

這一行上的遊標cursor = dbHandle.rawQuery(「SELECT sum(」+ BorrowMeTable.COLUMN_CREDIT_SCORE +「)AS creditcardtotal FROM」 + BorrowMeTable.DATABASE_TABLE +「WHERE」+ BorrowMeTable.COLUMN_NAME +「= \」「+ nameOfThePersonString +」\「」,null); – Vince