Que os parâmetros de consulta só podem ser strings é um erro de design horrível na API do banco de dados Android.
Apesar do que a documentação diz, você deve usar parâmetros apenas para valores de string reais; valores inteiros podem ser incorporados com segurança diretamente na string SQL. (Para blobs, você deve usar uma função que aceite
ContentValues
.) Observe que, embora o SQLite use tipagem dinâmica, valores de tipos diferentes não comparar igual na maioria dos casos (
SELECT 42='42';
retorna 0
).Existem alguns casos em que o SQLite faz converter valores automaticamente devido à afinidade de tipo (no seu caso, isso aconteceria se você declarasse o id
coluna como INTEGER
), mas isso é bastante contra-intuitivo, por isso não deve ser invocado.