Parameter kueri yang hanya bisa berupa string adalah kesalahan desain yang mengerikan di API database Android.
Terlepas dari apa yang dikatakan dokumentasi, Anda harus menggunakan parameter hanya untuk nilai string yang sebenarnya; nilai integer dapat dengan aman disematkan langsung ke string SQL. (Untuk blob, Anda harus menggunakan fungsi yang menerima ContentValues
.)
Harap dicatat bahwa meskipun SQLite menggunakan pengetikan dinamis, nilai dari tipe yang berbeda tidak membandingkan sama dalam banyak kasus (SELECT 42='42';
mengembalikan 0
). Ada beberapa kasus di mana SQLite melakukannya secara otomatis mengonversi nilai karena afinitas tipe (dalam kasus Anda, ini akan terjadi jika Anda mendeklarasikan id
kolom sebagai INTEGER
), tapi ini agak berlawanan dengan intuisi, jadi tidak boleh diandalkan.