Android: как сложить реальные значения из Sqlite? - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть следующий код для получения суммы реальных значений (суммы долга, хранящиеся в SQlite DB:

public double getsumdebt() {
        Cursor mCursor = db.rawQuery("SELECT SUM(CurrentAmount) FROM tblDebts", null);
        if(mCursor.moveToFirst()) {
        return mCursor.getDouble(0);
    }
    return mCursor.getDouble(0);
    }

Я пытаюсь вернуть сумму всех значений в столбце «CurrentAmount» и отобразить ее в виде текста:

 DbAdapter db2 = new DbAdapter(this);
 double sum= new Double(db2.getsumdebt());
 //sum = db2.getsumdebt();
  bar.setText("Progress: "+currencysymbol +current +" / " + currencysymbol + sum);

однако, когда я запускаю приложение в эмуляторе, я получаю принудительное закрытие во время запуска со следующим в журнале DDMS:

09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): java.lang.RuntimeException: Невозможно начать действие .Исключение нулевого указателя 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.os.Handler.dispatchMessage (Handler.java:99) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.os.Looper.loop (Looper.java:123) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.app.ActivityThread.main (ActivityThread.java:4627) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на java.lang.reflect.Method.invokeNative (собственный метод) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): в java.lang.reflect.Method.invoke (Method.java:521) 09–26 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): в dalvik.system.NativeStart.main (собственный метод) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): вызвано: java.lang.NullPointerException 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на com.evanrich.android.debtdestroyer.database.DbAdapter.getsumdebt (DbAdapter.java:106) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на com.evanrich.android.debtdestroyer.mainActivity.onCreate (mainActivity.java:73) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627) 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): ... еще 11

Похоже, он не может суммировать реальные значения, хранящиеся в БД. Кто-нибудь может мне помочь?

К вашему сведению, это конструктор моей таблицы:

private static final String DATABASE_CREATE =
    "CREATE TABLE IF NOT EXISTS tblDebts (_id integer primary key autoincrement, "
    + "Debt text not null, StartingAmount real, CurrentAmount real, " 
    + "InterestRate real, DueDate integer, MinimumPayment real );";

Спасибо.

1 Ответ

1 голос
/ 26 сентября 2011

У вас есть NPE

19: 01: 19.098: ОШИБКА / AndroidRuntime (677): вызвано: java.lang.NullPointerException 09-26 19: 01: 19.098: ОШИБКА / AndroidRuntime (677): в com.evanrich.android.debtdestroyer.database .DbAdapter.getsumdebt (DbAdapter.java:106) 09-26

Что такое строка 106?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...