2015-05-04 3 views
1

Привет, я пытаюсь запросить мою базу данных для количества записей, которые соответствуют текущей дате, а также соответствуют текущему времени в одной записи, однако I я получаю «не удается разрешить метод„запрос (java.lang.String)“Android: не удается разрешить метод "query (java.lang.string)"

Что мне нужно запрос, чтобы сделать, это проверить, если датировать записи, и время соответствуют текущей даты и времени.

Здесь мой файл базы данных DatabaseHandler

public class DatabaseHandler extends SQLiteOpenHelper{ 

    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_NAME = "FoodTekTrakr", 
      DATABASE_TABLE = "AlarmManager", 
      KEY_ID = "id", 
      KEY_TITLE = "title", 
      KEY_DATE = "date", 
      KEY_TIME = "time", 
      KEY_SONG = "song"; 


    public DatabaseHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db){ 
     db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_TITLE + " TEXT," + KEY_DATE + " TEXT," + KEY_TIME + " TEXT," + KEY_SONG + " TEXT)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
     onCreate(db); 
    } 

    public void createAlarm(UserInputAlarmData AlarmData){ 
     SQLiteDatabase db = getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_TITLE, AlarmData.getTitle()); 
     values.put(KEY_DATE, AlarmData.getDate()); 
     values.put(KEY_TIME, AlarmData.getTime()); 
     values.put(KEY_SONG, AlarmData.getSong()); 


     db.insert(DATABASE_TABLE, null, values); 
     db.close(); 
    } 

    public UserInputAlarmData getAlarmData(int id){ 
     SQLiteDatabase db = getReadableDatabase(); 

     Cursor cursor = db.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_TITLE, KEY_DATE, KEY_TIME, KEY_SONG}, KEY_ID 
       + "=?", new String[] {String.valueOf(id) }, null, null, null); 

     if (cursor != null) 
      cursor.moveToFirst(); 

     UserInputAlarmData AlarmData = new UserInputAlarmData(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4)); 
     db.close(); 
     cursor.close(); 
     return AlarmData; 
    } 

    public void deleteAlarm(UserInputAlarmData AlarmData){ 
     SQLiteDatabase db = getWritableDatabase(); 
     db.delete(DATABASE_TABLE, KEY_ID + "=?", new String[] { String.valueOf(AlarmData.getId()) }); 
     db.close(); 
    } 

    public int getAlarmDataCount() { 
     SQLiteDatabase db =getReadableDatabase(); 
     Cursor cursor = db.rawQuery("SELECT * FROM " + DATABASE_TABLE, null); 

     int count = cursor.getCount(); 
     db.close(); 
     cursor.close(); 

     return count; 
    } 

    public int updateAlarmData(UserInputAlarmData AlarmData){ 
     SQLiteDatabase db = getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_TITLE, AlarmData.getTitle()); 
     values.put(KEY_DATE, AlarmData.getDate()); 
     values.put(KEY_TIME, AlarmData.getTime()); 
     values.put(KEY_SONG, AlarmData.getSong()); 


     return db.update(DATABASE_TABLE, values, KEY_ID + "=?", new String[] { String.valueOf(AlarmData.getId())}); 
    } 

    public List<UserInputAlarmData> getAllAlarmData() { 
     List<UserInputAlarmData> AlarmDatas = new ArrayList<UserInputAlarmData>(); 
     SQLiteDatabase db = getWritableDatabase(); 
     Cursor cursor = db.rawQuery("SELECT * FROM " + DATABASE_TABLE, null); 

     if (cursor.moveToFirst()) { 
      do { 
       UserInputAlarmData AlarmData = new UserInputAlarmData(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4)); 
       AlarmDatas.add(AlarmData); 
      } 
      while (cursor.moveToNext()); 
     } 
     return AlarmDatas; 
    } 

public boolean DateAndTimeChecker() { 

     Date ThisDate = Calendar.getInstance().getTime(); 
     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
     String DateChecker = formatter.format(ThisDate); 

     Date ThisTime = Calendar.getInstance().getTime(); 
     SimpleDateFormat timeformatter = new SimpleDateFormat("hh:mm"); 
     String TimeChecker = formatter.format(ThisTime); 
     String DatabaseTime; 
     SQLiteDatabase db =getReadableDatabase(); 

     Cursor c = db.query("SELECT " + KEY_DATE + "WHERE"+ KEY_TIME + "=" + DateChecker + "FROM" + DATABASE_TABLE); 
     if(c != null) { 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 

} 

Метод, в котором я получаю ошибку или

public boolean DateAndTimeChecker() { 

     Date ThisDate = Calendar.getInstance().getTime(); 
     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
     String DateChecker = formatter.format(ThisDate); 

     Date ThisTime = Calendar.getInstance().getTime(); 
     SimpleDateFormat timeformatter = new SimpleDateFormat("hh:mm"); 
     String TimeChecker = formatter.format(ThisTime); 
     String DatabaseTime; 
     SQLiteDatabase db =getReadableDatabase(); 

     Cursor c = db.query("SELECT " + KEY_DATE + "WHERE"+ KEY_TIME + "=" + DateChecker + "FROM" + DATABASE_TABLE); 
     if(c != null) { 
      return true; 
     } 
     else{ 
      return false; 
     } 

    } 

Большое спасибо заранее за помощь

+3

вы могли бы получать сообщение об ошибке в строке 'Cursor с = db.query ("SELECT" + KEY_DATE + "WHERE" + KEY_TIME + "=" + DateChecker + "FROM" + DATABASE_TABLE); 'потому что в классе' SQLiteDatabase' нет никакого метода 'query', который принимает один параметр – Prashant

+0

, пожалуйста, разместите эту часть логарифма, где ошибка упоминается в подробном описании. – Jamil

+0

Он не попадает на логарифм, так как ошибка подчеркнута красным цветом ((«SELECT» + KEY_EMAIL + «WHERE» + KEY_PHONE + «=» + DateChecker + «FROM» + DATABASE_TABLE)) – Goldinegg

ответ

0

Late к партии, но я думаю, что проблема здесь в том, что ваш оператор выбора не является правильным. Правильный формат для оператора select: SELECT column_name FROM table_name WHERE [condition].

0

Вам нужно добавить второй параметр на rawQuery

Cursor c = db.query(..., null);

Смежные вопросы