Android SQLite列总和

时间:2017-03-26 02:38:24

标签: android sqlite

我无法获得我的SQLite列的总和。该应用程序不断崩溃。任何帮助将不胜感激,谢谢=)。这是我在DatabaseHelper和Main Activity中的代码:

public class DatabaseOperator {
    private DataManager dataManager;
...
    public int getTotalExpenses()
{
    SQLiteDatabase database = dataManager.getReadableDatabase();
    Cursor cursor = database.rawQuery("SELECT SUM(" + Integer.valueOf(Expenses.C_TOTAL_PRICE) + ") FROM " + Expenses.TABLE, null);
    cursor.moveToFirst();
    int i = cursor.getInt(0);
    cursor.close();
    return i;
}

//MainActivity.class
TextView textTotalExpenses;
int totalExpenses;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

DatabaseOperator databaseOperator = new DatabaseOperator(this);
textTotalExpenses = (TextView) findViewById(R.id.textTotalExpenses);
totalExpenses = databaseOperator.getTotalExpenses();
textTotalExpenses.setText(totalExpenses);

03-26 09:31:23.483 5818-5818 / com.example.everydaybudgeting20 E / AndroidRuntime:FATAL EXCEPTION:main                                                                                处理:com.example.everydaybudgeting20,PID:5818                                                                                java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.everydaybudgeting20 / com.example.everydaybudgeting20.MainActivity}:java.lang.NumberFormatException:对于输入字符串:“totalPrice”                                                                                    在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)                                                                                    在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)                                                                                    在android.app.ActivityThread.-wrap12(ActivityThread.java)                                                                                    在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)                                                                                    在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                    在android.os.Looper.loop(Looper.java:154)                                                                                    在android.app.ActivityThread.main(ActivityThread.java:6119)                                                                                    at java.lang.reflect.Method.invoke(Native Method)                                                                                    在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)                                                                                    在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)                                                                                 引起:java.lang.NumberFormatException:对于输入字符串:“totalPrice”                                                                                    在java.lang.Integer.parseInt(Integer.java:521)                                                                                    在java.lang.Integer.valueOf(Integer.java:611)                                                                                    at com.example.everydaybudgeting20.DatabaseOperator.getTotalExpenses(DatabaseOperator.java:229)                                                                                    在com.example.everydaybudgeting20.MainActivity.onCreate(MainActivity.java:76)                                                                                    在android.app.Activity.performCreate(Activity.java:6679)                                                                                    在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)                                                                                    在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)                                                                                    在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)                                                                                    在android.app.ActivityThread.-wrap12(ActivityThread.java)                                                                                    在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)                                                                                    在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                    在android.os.Looper.loop(Looper.java:154)                                                                                    在android.app.ActivityThread.main(ActivityThread.java:6119)                                                                                    at java.lang.reflect.Method.invoke(Native Method)                                                                                    在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)                                                                                    在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

1 个答案:

答案 0 :(得分:2)

我自己修好了。谢谢你的帮助!

    public int getTotalExpenses()
{
    int total = 0;
    SQLiteDatabase database = dataManager.getReadableDatabase();
    Cursor cursor = database.rawQuery("SELECT SUM("+ Expenses.C_TOTAL_PRICE + ") FROM " + Expenses.TABLE, null);
    if (cursor.moveToFirst())
    {
        total = cursor.getInt(0);
    }
    while (cursor.moveToNext());
    return total;
}
相关问题