SQLiteDatabase - Как использовать предложение where? - PullRequest
7 голосов
/ 25 февраля 2012
public Cursor fetchTimetable() {
    return mDb.query(DATABASE_TABLE_TIMETABLE, new String[] {TIMETABLE_ROWID,    TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}, null, null, null, null, null);
}

Например, если я хотел TIMETABLE_MODULECODE = 123. Как бы я это сделал, я прочитал его первый ноль. Я попробовал это ниже, но все еще не работает

public Cursor fetchTimetable() {
    String a = "TIMETABLE_CODE = ADD";
    return mDb.query(DATABASE_TABLE_TIMETABLE, new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}, a, null, null, null, null);
}

Ответы [ 7 ]

10 голосов
/ 06 августа 2014

Мой рабочий пример с аргументами where (это более понятно при использовании):

        String [] settingsProjection = {
                DBContract.Settings._ID,
                DBContract.Settings.COLUMN_NAME_USER_ID,
                DBContract.Settings.COLUMN_NAME_AUTO_LOGIN
        };

        String whereClause = DBContract.Settings.COLUMN_NAME_USER_ID+"=?";
        String [] whereArgs = {userId.toString()};

        Cursor c = db.query(
                DBContract.Settings.TABLE_NAME,
                settingsProjection,
                whereClause,
                whereArgs,
                null,
                null,
                null
        );
6 голосов
/ 25 февраля 2012
db.query
        (
                TABLE_NAME,
                new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO },
                TABLE_ROW_ID + "=" + rowID,
                null, null, null, null, null
        );

TABLE_ROW_ID + "=" + rowID, здесь "=" - это предложение where

4 голосов
/ 10 апреля 2014

правильный синтаксис:

String[] projection= {column names};
String[] where={"values for where clause"}; //this must be array     
public Cursor fetchTimetable() { 

    return mDb.query(TABLE_NAME, projrction, "columname"+"=?", where, null, null, null); 
} 
4 голосов
/ 25 февраля 2012

Что именно означает "все еще не работает"?

Следующий код должен работать просто отлично:

public Cursor fetchTimetable() { 
    String[] columnNames = new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME};
    String whereClause = "TIMETABLE_MODULECODE=123"; 

    return mDb.query(DATABASE_TABLE_TIMETABLE, columnNames, whereClause, null, null, null, null); 
} 
2 голосов
/ 25 февраля 2012

Простой способ:

return mDb.rawQuery("SELECT * FROM myTable WHERE column1 = "+ someValue, null);
1 голос
/ 29 октября 2017

Если вы проверяете строковое значение, вам нужно заключить строку в кавычки, как показано ниже:

dbHelper.COL_EMAIL +"='"+givenEmail+"'", 
1 голос
/ 07 января 2017

Вы можете использовать Используйте этот запрос:

SQLiteDatabase db = this.getReadableDatabase();

//Cursor cursorr = db.rawQuery(Query, null);

Cursor cursorr =  db.rawQuery("select * from " + DATABASE_TABLE_EHS + " where " + TASK_ID + "='" + taskid + "'" , null);

    if (cursorr.moveToFirst()) 
   {

        do {

            // your code like get columns

            }
         while (cursorr.moveToNext());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...