2017-01-16 6 views
0

すべて! マイコード: このメソッドは現在の日付をチェックする必要があり、変更された場合はdbに新しいレコードが作成されます。SQLiteベースのアプリケーションのバグ。日付を使用します。 Android

private static String getDateInString() 
    { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
     String date = sdf.format(new Date()); 
     return date; 
    } 

表構造:

public static void updateHintBase(SQLiteOpenHelper database) 
    { 
     String currentDate = getDateInString(); 
     SQLiteDatabase db = database.getReadableDatabase(); 
     Cursor cursor = db.query("HINTS", 
       new String[]{"CURRENT_DATE"}, 
       "CURRENT_DATE = ?", 
       new String[]{currentDate}, 
       null, null, null); 
     int countRow = cursor.getCount(); 
     cursor.close(); 
     if (countRow==0) 
     { 
      ContentValues values = new ContentValues(); 
      values.put("CURRENT_DATE", currentDate); 
      values.put("SPENT", 0); 
      values.put("TOTAL", TOTAL_HINTS); 
      db.insert("HINTS", null, values); 
     } 
     db.close(); 
    } 

このメソッドは、Stringに日付を変換

db.execSQL("CREATE TABLE HINTS (CURRENT_DATE TEXT PRIMARY KEY , " 
        + "SPENT INTEGER," 
        + "TOTAL INTEGER);"); 

しかし、私のコードは動作しません。初めてたとえば

...それは動作しますが、日が私の最初の方法を変更して二回目はとにかくカーソル内の要素を検索します。

1)今日、2017年1月16日を。私のアプリケーションは実行されました。全て大丈夫だ。

2)今日18.01.2017。私のアプリケーションが実行され、そのメソッドが期待されるcursor.getCount()私に戻る新しい日付の新しい行が作成されます。しかしそれは私に戻るなど

答えて

0

カーソルをcursor.MoveToNext()に設定しなければならない可能性があります。問題が発生している可能性のある情報を得る前に、カーソルを閉じることもあります。最後に、カーソルをループさせることは、より多くの情報を得る最も効率的な方法です。

+0

ありがとう、私はあなたに同意します...しかし、行数を取得した後、カーソルを閉じました。そして、別のコードでは、私は本当にループを使用します。しかし、このコードでは、現在の日付を持つ既存の行に関する情報を取得するだけで済みます。 –

0

このクエリを試してください:

cursor = db.rawQuery("select count(YOUR_ID) from HINTS where CURRENT_DATE = ? ", new String[] {currentDate}); 
+0

ちょうど今試しました。結果は同じです。初めてそれは動作します。しかし、私はスマートフォンの日付を変更し、アプリケーションを再度実行した。デバッグモードでは、count = 1と表示されます...私はその行が毎回クエリの後に自分自身を変更するのを見ました... –

+0

あなたはcursor.getCount();を使用しているので、あなたはそれを得ています。代わりにこれを使用しようとしていますif(cursor.moveToFirst()){ \t countRow = cursor.getInt(0); } – android

+0

あなたが書いているものを使用しようとしました。以前の作品と同じように機能します。そして今私は主な間違いを見つけました。私のポストを以下でお読みください。 –

関連する問題