SQLiteQueryBuilder.buildQuery not using selectArgs?

Posted by user297468 on Stack Overflow See other posts from Stack Overflow or by user297468
Published on 2010-03-20T00:19:51Z Indexed on 2010/03/20 0:21 UTC
Read the original article Hit count: 758

Filed under:
|
|
|

Alright, I'm trying to query a sqlite database. I was trying to be good and use the query method of SQLiteDatabase and pass in the values in the selectArgs parameter to ensure everything got properly escaped, but it wouldn't work. I never got any rows returned (no errors, either).

I started getting curious about the SQL that this generated so I did some more poking around and found SQLiteQueryBuilder (and apparently Stack Overflow doesn't handle links with parentheses in them well, so I can't link to the anchor for the buildQuery method), which I assume uses the same logic to generate the SQL statement. I did this:

SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); builder.setTables(BarcodeDb.Barcodes.TABLE_NAME);

String sql = builder.buildQuery(new String[] { BarcodeDb.Barcodes.ID, BarcodeDb.Barcodes.TIMESTAMP, BarcodeDb.Barcodes.TYPE, BarcodeDb.Barcodes.VALUE }, "? = '?' AND ? = '?'", new String[] { BarcodeDb.Barcodes.VALUE, barcode.getValue(), BarcodeDb.Barcodes.TYPE, barcode.getType()}, null, null, null, null);

Log.d(tag, "Query is: " + sql);

The SQL that gets logged at this point is:

SELECT _id, timestamp, type, value FROM barcodes WHERE (? = '?' AND ? = '?')

However, here's what the documentation for SQLiteQueryBuilder.buildQuery says about the selectAgs parameter:

You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection.

...but it isn't working. Any ideas?

© Stack Overflow or respective owner

Related posts about android

Related posts about database