2011-10-27 32 views
0

我的數據庫(顯示在表上的信息)連接到按鈕。點擊時,表格應顯示信息。數據庫的工作原理,但這是捕手:它有效當我從測試中輸入信息時。但是如果數據庫沒有加載,數據庫就會崩潰。這裏是代碼:打開數據庫後sqlite強制關閉

rentD.open(); 
Log.d(TAG, "OPENING RENT DATABASE..."); 
String rentData = rentD.getData(); 
billAmount.setText("Total: " + nf.format(rentD.getAmountTotal())); 
Log.d(TAG, "CLOSING RENT DATABASE..."); 
rentD.close(); 
Log.d(TAG, "RENT DATABASE CLOSED"); 
dataResults.setText(rentData); 

所以每次我點擊房租按鈕,我得到一個強制關閉。進一步查看後,我發現的問題與:

billAmount... nf.format(rentD.getAmountTotal())); 

它顯示金額格式的金額。所以如果我用一個String變量替換「rentD.getAmountTotal()」,數據庫完美地工作。下面是我從logcat中收到錯誤:

10-26 23:53:40.764: DEBUG/DEBUG(14999): OPENING RENT DATABASE... 
10-26 23:53:40.764: DEBUG/AndroidRuntime(14999): Shutting down VM 
10-26 23:53:40.764: WARN/dalvikvm(14999): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 

同樣,問題似乎傳遞一個尚不存在到TextView的數據。 我的最終結果是讓程序在其中沒有數據的情況下啓動,以便用戶可以訪問將填充表的活動。有什麼建議麼?

+0

什麼是變量' nf'它有什麼作用? – androidnoob

+0

nf只是一個NumberFormatter(貨幣)。 – SpicyWeenie

+0

@androidnoob我試過一個try/catch /終於得到了它的工作,所以我可以從其他活動中輸入數據,但它改變了我的數據庫怎麼行動不利... – SpicyWeenie

回答

0

從您的意見,我會建議你從getAmountTotal()放下DecimalFormat,因爲它沒有任何用處(你不使用的format()的返回值),並用這個代替:

public double getAmountTotal() { 
    Cursor cursor = ourRDatabase.rawQuery("SELECT SUM(RENT_AMOUNT) FROM rentTable", null); 
    if (cursor.moveToFirst()) { 
     return cursor.getDouble(0); 
    } else { 
     return 0; // or another default value of your choice 
    } 
} 
+0

該解決方案修復了它!謝謝! – SpicyWeenie