2011-09-26 2 views
0

내가 SQLite는 DB에 저장된 실제 값 (부채 금액의 합 얻기 위해 다음과 같은 코드를 가지고 :Android : Sqlite에서 실제 값을 합하는 방법은 무엇입니까?

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"열에서 모든 값의 합계를 반환하려고하고 텍스트 뷰에 표시 :

09-26 19 : 나는 에뮬레이터에서 응용 프로그램을 실행할 때

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

이, 나는이 (가) DDMS 로그에 다음으로, 발사시 강제 가까이 가져 : 01 : 19.09 8 : ERROR/AndroidRuntime (677) : 치명적인 예외 : 주 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.evanrich.android.debtdestroyer/com.evanrich.android.debtdestroyer.mainActivity} : java.lang.NullPointerException 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663) 09 -26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677)에서 android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677)에서 로이드. app.ActivityThread.access $ 2300 (ActivityThread.java:125) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033) 09- 26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : android.os.Handler.dispatchMessage (Handler.java:99) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : android.os.Looper.loop (Looper.java:123)) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : android.app.ActivityThread.main (ActivityThread.java:4627) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : java.lang.reflect.Method.invokeNative (원시 메소드)에 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) java.lang.reflect.Method.invoke (Method.java:521)에서 09 -26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : 01 : 19.098 : $ com.android.internal.os.ZygoteInit MethodAndArgsCaller.run (ZygoteInit.java:868) 09-26 19에서 ERROR/AndroidRuntime (677) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : at dalvik.system.N ativeStart.main (네이티브 메소드) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : 원인 : java.lang.NullPointerException 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677) : at com.evanrich.android.debtdestroyer.database.DbAdapter.getsumdebt (DbAdapter.java:106) 09-26 19 : 01 : 19.098 : ERROR/AndroidRuntime (677)에서 com.evanrich.android.debtdestroyer.mainActivity.onCreate (mainActivity.java:73) 09-26 19 : 01 : 19.098 : ERROR/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 더

DB에 저장된 실제 값을 합산 할 수없는 것처럼 보입니다. 누구든지 나를 도울 수 있습니까?

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);"; 

감사 :

참고로,이 내 테이블 생성자입니다. 01 :

답변

1

당신은 NPE에게

(19)이 19.098 : ERROR/AndroidRuntime (677) : java.lang.NullPointerException이 09-26 19시 1분 19초 :에 의해 발생.098 : ERROR/AndroidRuntime (677) : com.evanrich.android.debtdestroyer.database.DbAdapter.getsumdebt (DbAdapter.java:106) 09-26

줄 106은 무엇입니까?

+0

DbAdapter의 줄 106은 다음과 같습니다. 커서 mCursor = db.rawQuery ("SELECT SUM (CurrentAmount) from tblDebts", null); –

+0

그래서 db가 null 일 가능성이 높습니다. 디버거에서 확인하십시오. – superfell

+0

당신은 정확합니다 .. 나는이 어댑터에 대해 올바른 열기를 호출하지 않았으며 다음과 같이 고정했습니다. DbAdapter db2 = new DbAdapter (this); db2.open(); double sum = db2.getsumdebt(); bar.setText ("진행률 :"+ currencysymbol + 현재 + "/"+ currencysymbol + sum); db2.close(); –

관련 문제