android - rawQuery arguments weird behaviour? -
i wrote rawquery gives me empty cursor:
string query = "select * " + tbl_name + " ? = ?"; string[] args = new string[] {col_name, long.tostring(id)}; cursor c = db.rawquery(query, args);
but if following query expected results:
string query = "select * " + tbl_name + " " + col_name + " = " + long.tostring(id); cursor c = db.rawquery(query, null);
i gathered can't use table name 1 of arguments of 'rawquery' method. i'm not sure why not (i presume surrounds argument ' ', it's guess).
other came conclussion args should used in order include user inputs query, , in regards looks better use sqlitestatement
.
in summary: (and if possible why) shoul use args in rawquery (instead of concatenated in string). , why should use rawquery @ instead sqlitestatement (or query)?
as far know col_name can't replaced "?". android takes "?" "arguments", not "selection"
final string query = "select * " + tbl_name + " col_name=?"; final string[] args = new string[] {long.tostring(id)}; final cursor c = db.rawquery(query, args);
or better use method
query(string table, string[] columns, string selection, string[] selectionargs, string groupby, string having, string orderby)
in case this:
final string[] args = new string[] {long.tostring(id)}; final cursor c = db.query(tbl_name, null, col_name + "=?", args, null, null, null);
Comments
Post a Comment