Actually, accepting only strings does not make sense, because strings are never compared with numbers, i.e. queries such as
c.rawQuery("SELECT * FROM mytable WHERE some_number_column = ?", args);
will never return records with numbers. (You would need to declare all columns as TEXT and never use expressions or convert them with something like CAST(... AS TEXT) .)
Jens mentioned a possible explanation, but this is no reason for an inconsistent and simple poor design.
source share