У меня есть следующий код для получения суммы реальных значений (суммы долга, хранящиеся в 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 );";
Спасибо.