开发者

Android sql query using WHERE clause

Dear Stack Overflow Community,

I have a question regarding how to incorporate a WHERE clause when querying a sql database in Android. My goal is to return specific records from my database where the date picked by a datepicker matches the date stored.

Here is my code:

private static String datePickerDate = "3/29/2011";
private static String[] FROM = { _ID, NAME, PRICE, DATE, TIME };
private static String ORDER_BY = TIME + " DESC ";
private static String WHERE = DATE + "is like " + datePickerDate;
private Cursor getEvents(){
    // Perform a managed Query. The Activity will handle closing
    // and re-querying the cursor when needed
    SQLiteDatabase db = events.getReadableDatabase();
    Cursor cursor = db.query(TABLE_NAME, FROM, null, null, null, null, ORDER_BY);
    startManagingCursor(cursor);
    return cursor;
}

My quest开发者_StackOverflow社区ions are thus: Where does my "WHERE" statement go?

And is my "WHERE" statement correct?

The documentation I found for db.query doesn't specify if a "WHERE" clause can be used, it just specifies that a "HAVING" clause is possible, but I don't quite think that's what I'm wanting.

 db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)   


The selection represents your WHERE clause.

From the doc

selection A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given table.

So you can try this (untested):

private static String WHERE = "DATE like ?";
db.query(table, columns, WHERE , new String[] { datePickerDate }, groupBy, having, orderBy)


If you want to use the WHERE clause, I would suggest using the raw query function in the SQLiteDatabase class, shown here.

This way, you can have the raw query typed out (or in segments) as if you were doing it naturally with SQL.

EDIT: On a side note, the "selection" parameter of the query() function corresponds to the WHERE clause, as noted here


About where you're "WHERE" goes - look here

And regarding the second part, I think you miss the qouts before and after the value, it should be .. like '3/29/2011' and not .. is like 3/29/2011

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜