selectionArgs en SQLiteQueryBuilder no funciona con valores enteros en columnas

Estoy tratando de seleccionar algunos datos de la base de datos y tengo dos segmentos de código para hacerlo:

cursor = builder.query(db,
                    new String[]{"col1", "col2", "col3"},
                    "id = ?", new String[]{getSID(db)}, null, null, null);

y

cursor = builder.query(db,
                    new String[]{"col1", "col2", "col3"},
                    "id = " + getSID(db), null, null, null, null);

La diferencia entre ellos es que el primero parece ser más correcto según la documentación, pero tampoco funciona, el cursor está vacío. En lugar del segundo, obtengo todos los datos que necesito.

Así que intenté ejecutar diferentes consultas SQL en mi PC con una copia de la base de datos y eso es lo que tengo:

SELECT col1, col2, col3 FROM SomeTables WHERE (id = '42')

Este no funciona (y esta consulta obviamente es igual a la consulta, generada por el primer ejemplo de código)

SELECT col1, col2, col3 FROM SomeTables WHERE (id = 42)

Y este funciona bien (es igual a consultar desde el segundo ejemplo de código).

Como sé, SQLite debería realizar la conversión de tipos automáticamente, pero algo salió mal y no sé por qué. ¿Tiene alguna idea sobre cómo se puede arreglar la primera muestra de código? (O, tal vez, la base de datos?)

Si importa, aquí está simplificado.CREATE guión de la tabla conid campo:

CREATE TABLE SomeTable ( ID PRIMARY KEY, col1, col2, [...] )

UPD: Y, por cierto, getSID (db) devuelve el objeto String.

Respuestas a la pregunta(3)

Su respuesta a la pregunta