2017-08-25 8 views
0

最後の3日間のこんにちは私は単純なクエリで作業していますが、それは機能していません。到着を登録せずに出発を登録すると、私のDBヘルパーのコードはここにあります。空の文字列に "dd-MM-yyyy"という形式の文字列の日付を比較する方法

public Boolean HasShowedUpToday(int check_id) 
{ 
    Boolean attend; 
    SQLiteDatabase db=this.getWritableDatabase(); 
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()); 
    time=Calendar.getInstance().getTime(); 
    String dateoftoday= dateFormat.format(time);  
    Cursor c = db.rawQuery("SELECT * FROM attendance where user_id = '"+check_id+"' and arrival_time ='"+dateoftoday+"' and departure_time ='';", null); 
    if (c.moveToFirst()) 
    { 

     attend=true; 
    } 
    else 
    { 
     attend=false; 
    } 
    return attend; 
} 
+0

データベースで操作しているときのロケール?ロケールは、データベースではなくユーザーと通信するときに重要です。 –

+0

@マレックRので、私は私がそれをdbで保存した形式を変更する必要がありますか? –

+0

なぜあなたの質問には余分なものがありますか?あなたはそれがこのようにすべきだと思いませんか?> 'Cursor c = db.rawQuery(" user_id = "+ check_id +"とarrival_time = "+ dateoftoday +" departure_time =; "、null);' –

答えて

0

まずはそのようなクエリを作成しないでください。これは、将来、SQLインジェクションに脆弱なコードを書くようにする非常に間違った習慣です。

rawQuery (String sql, String[] selectionArgs)を使用してください。 だから、次のようになります。

Cursor c = db.rawQuery("SELECT * FROM attendance where user_id = ? and arrival_time = ? and departure_time IS NULL", 
         new String[] { check_id, dateoftoday}); 

this SO answerに見てみましょう。また、this answerはさらに良く見えます - EPOCH時間からのミリ秒数としての日付の格納。

+0

ありがとう、私はこれらのすべての点を考慮する –

関連する問題