2017-12-15 8 views
-2

私はSQLiteDBアンドロイドの列の合計を検索しようとしています。ここでsqliteのsumクエリ

は私の検索クエリです:

String selectQuery = "SELECT cat SUM(cost) FROM " + TAB_NAM + " group by cat"; 
SQLiteDatabase db = this.getReadableDatabase();     
Cursor cursor = db.rawQuery(selectQuery, null); 

しかし、実行に上記のクエリでエラーが発生します:

12-15 23:38:51.528 23462-23462/inc.circl.expy E/SQLiteLog: (1) near "(": syntax error 
12-15 23:38:51.532 23462-23462/inc.circl.expy E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: inc.circl.expy, PID: 23462 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{inc.circl.expy/inc.circl.expy.HomeActivity}: android.database.sqlite.SQLiteException: near "(": syntax error (code 1): , while compiling: SELECT cat sum(cost) FROM tab_nam group by cat 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595) 
     at android.app.ActivityThread.access$800(ActivityThread.java:178) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 
     at android.os.Handler.dispatchMessage(Handler.java:111) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5631) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
    Caused by: android.database.sqlite.SQLiteException: near "(": syntax error (code 1): , while compiling: SELECT cat sum(cost) FROM tab_nam group by cat 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:898) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:509) 

そして、私は問題について検索した...

Android get sum of database column

how to get the sum of all numbers in a column in a sqlite databse, android

しかし、私はまだ立ち往生しています。

答えて

3

あなたはコンマSELECT cat, SUM(cost) FROM " + TAB_NAM + " group by cat

を忘れてしまった。また、ベストプラクティスのために、あなたは、SQLクエリに文字列を連結するべきではありません。これは、SQLインジェクションスタイルの攻撃まであなたを開きます。

1

各列の間にカンマを追加します。あなたの両方のおかげ@chrisstillwell

String selectQuery = "SELECT cat , SUM(cost) FROM " + TAB_NAM + " group by cat"; 
+0

が、それは、このような愚かな間違いだった、私は一種の恥ずかしいです。とにかくありがとう。 – San9