簡體   English   中英

Android:無法解析方法“ query(java.lang.string)”

[英]Android: cannot resolve method “query(java.lang.string)”

嘿,我試圖在數據庫中查詢與當前日期匹配並且與同一記錄中的當前時間匹配的記錄數,但是,我得到了“無法解析方法“ 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;
        }

    }

提前非常感謝您的幫助

您需要在rawQuery上添加第二個參數

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

晚會晚了,但我認為這里的問題是您的選擇陳述不正確。 select語句的正確格式為:SELECT column_name FROM table_name WHERE [條件]。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM