通过内容提供程序使用Sum查询

时间:2013-03-29 20:31:47

标签: android android-contentprovider android-sqlite

我要做的是通过我的内容提供商使用SUM查询。到目前为止,我还没有这样做。

我的内容提供商有一个名为信用评分的列。我正在尝试做的是拉取数据并将其加在一起以产生特定人的最终得分,即以约翰史密斯为名的每一行,添加信用评分列中列出的金额。

我找到了一些解决方案,但似乎没有任何效果。我已经读过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)

我是在正确的轨道上还是离开基地?

1 个答案:

答案 0 :(得分:0)

在查询中的FROM之前添加AS creditcardtotal