Я думаю, что я что-то упустил в вашем вопросе, если он возвращает SQLITE_ROW, то у него есть готовая строка для чтения.
API находится на http://www.sqlite.org/capi3ref.html#sqlite3_step
Вы можете получить доступ к этим данным через функции столбца:
http://www.sqlite.org/capi3ref.html#sqlite3_column_blob
Таким образом, вы в основном делаете все правильно, в то время как sqlite3_step возвращает SQLITE_ROW, у вас все еще есть данные для доступа.
// Разъяснение
SQLite извлекает и выдает строки по одной за раз, используя sqlite3_step, вызывая его, чтобы не получить весь набор результатов. Так что вы не узнаете, пока не позвоните step, собираетесь ли вы получать данные.
Мне приходилось совсем немного использовать SQLite, когда я работал на встроенных устройствах, но всегда через приличный DAL. Я не большой поклонник его API, но я думаю, он легкий.