2017-06-01 14 views
0

私はプログラミングに慣れていますので、簡単にそれを取ってください。だから私は時間だけSQLliteから読んでいると私は現在の時間が最後に保存された時と同じかどうかをチェックしています。私の問題は、私はこのメソッドを呼び出すときに、Sqliteのアプリケーションにはまだコースクラッシュのデータがないということです。どのようにこれを解決するための任意のアイデア。だから、ユーザーがアプリを初めて起動したときにアプリがクラッシュすることはありませんか?triyngで空のデータベースのデータを比較するときのSqliteの回避策

public void CHECK(){ 

    sqliteDbHelper_ = new Sqlite_DBHelper(getActivity()); 
    sqLiteDatabase = sqliteDbHelper_.getWritableDatabase(); 
    String[] columns = {"hour_only","JAKOST"}; 
    cursor = sqLiteDatabase.query("podatki", columns,null,null,null,null,null); 
    Calendar calander = Calendar.getInstance(); 
    Integer currentHour = calander.get(Calendar.HOUR_OF_DAY); 
    buttonSaveOnMainPage.setClickable(true); 
    cursor.moveToLast(); 
    Integer lastInputedHour = cursor.getInt(0); 
    Log.e(TAG+"zadnja vnesena URA",""+lastInputedHour); 
    Log.e(TAG+"trenutna URA",""+currentHour); 
    if (lastInputedHour == currentHour){ 
     buttonSaveOnMainPage.setBackgroundColor(Color.RED); 
     buttonSaveOnMainPage.setClickable(false); 
    } 
    else 
     buttonSaveOnMainPage.setBackgroundColor(Color.GREEN); 
     buttonSaveOnMainPage.setClickable(true); 
} 

答えて

1

カーソルの数を取得し、現在の時間をデフォルトにすることができます。

if (cursor.getCount() < 1) { 
    // Set default value 
} else { 
    // use value from cursor 
} 

よう

何かがここでのドキュメントへのリンク

https://developer.android.com/reference/android/database/Cursor.html#getCount%28%29

+2

また、 'moveToLast()'は最後の行がない場合は 'false'を返します。実際に私に感謝した –

+0

ありがとう –

-1

Try/Catchブロックにあなたのメソッドを呼び出さないのはなぜですか?これを確認してください:

try { 
    CHECK(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

私は助けてくれることを願っています!

+0

これは本当に問題を解決しないだろうが、あなたが破壊されたコードのどの行を知っている聞かせます。どのようなコード行が問題であるかを知ることは、修正につながるでしょう。 – Durus

関連する問題