1

私がやろうとしているのはSUM、コンテンツ プロバイダーを介してクエリを使用することです。これまでのところ、私はそうすることができませんでした。

私のコンテンツ プロバイダーには、クレジット スコアと呼ばれる列があります。私がやろうとしているのは、データを引き出して足し合わせて、特定の人物の最終スコアを生成することです。つまり、名前が john smith のすべての行に、クレジット スコアの列に記載されている金額を追加します。

いくつかの解決策を見つけましたが、何も機能していないようです。コンテンツリゾルバーでは実行できない生のクエリなしでは実行できないことをスタックオーバーフローで読みました。

使用したコードは次のとおりです。

    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)

私はここで正しい軌道に乗っていますか、それとも基地から離れていますか?

4

1 に答える 1

0

クエリの FROM の前に AS creditcardtotal を追加します

于 2013-03-29T20:37:29.793 に答える