2011-10-27 11 views
0

データベース(テーブルに表示する情報)がボタンに接続されています。クリックすると、テーブルに情報が表示されます。データベースは機能しますが、これはキャッチャーです。これはテストから情報が入力されたときに機能します。しかし、ロードするものがない場合、データベースはクラッシュします。コードは次のとおりです。データベースを開くとsqlite force close

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

だから私はRENTボタンをクリックするたびに強制終了します。さらに見て、私が見つけた問題は金額形式を表示する:

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

金額形式を表示します。したがって、 "rentD.getAmountTotal()"をString変数に置き換えると、データベースは完全に機能します。

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のにまだ存在していないデータを渡しているように見える:ここで私はLogCatから受け取っエラーです。 私の最終的な結果は、ユーザーがテーブルに移入するアクティビティにアクセスできるように、データがない状態でプログラムを開始させることです。助言がありますか?

+0

変数である何 ' nf'とは何ですか? – androidnoob

+0

nfは単なるNumberFormatter(通貨)です。 – SpicyWeenie

+0

@androidnoob私はtry/catch/tryを試してみましたが、別のアクティビティからデータを入力できるようになっていましたが、データベースがどういうふうに行動するかが変わりました... – SpicyWeenie

答えて

0

あなたのコメントから、私はそれは(あなたがformat()の戻り値を使用していない)に有用何もしませんので、あなたがgetAmountTotal()からDecimalFormatをドロップ示唆し、代わりにこれを使用します。

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

関連する問題