首页 文章

Android SQLite列总和

提问于
浏览
-3

我被困在得到我的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:对于android.app.ActivityThread.handleLaunchActivity上的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)的输入字符串:“totalPrice”( ActivityThread.java:2726)在Android.app.Handler.dispatchMessage的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)上的android.app.ActivityThread.-wrap12(ActivityThread.java)(Handler.java: 102)在android.app.Looper.loop(Looper.java:154)的android.app.ActivityThread.main(ActivityThread.java:6119),位于com.android的java.lang.reflect.Method.invoke(Native Method) .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) :776)引起:java.lang.NumberFormatException:对于输入字符串:java.lang.Integer.parseInt(Integer.java:521)中的输入字符串:“totalPrice”,位于java.lang.Integer.valueOf(Integer.java:611)at com.example.everydaybudgeting20.DatabaseOperator.getTotalExpenses(DatabaseOperator.java:229)com.example.everydaybudgeting20.MainActivity.onCreate(MainActivity.java:76)at android.app.Activity.performCreate(Activity.java:6679)at android位于android.app.A活动中的android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2618)上的.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118),位于android.app.ActivityThread的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) . -wrap12(ActivityThread.java)在android.app.A活动上运行android.app.A.运行时在Android.os.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) . (Looper . java:154)在android.app.ActivityThread.main(ActivityThread.java:6119)at com.android.i的java.lang.reflect.Method.invoke(Native Method) nternal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

1 回答

  • 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;
    }
    

相关问题