Режим потоков определяется параметрами компиляции, запуска или выполнения.Более подробная информация здесь:
http://www.sqlite.org/threadsafe.html
В документах сказано, что сериализация - это значение по умолчанию, что означает, что вы можете использовать несколько потоков - это вас защитит.Если вы хотите больше параллелизма, вы можете использовать многопоточный режим.
Если вы используете его в многопоточном режиме, убедитесь, что вызовы синхронизированы для данного соединения.Если вам нужна параллельная работа, используйте несколько соединений и защищайте соединение.
Сам API на это намекает, принимая объект db (соединение) в качестве аргумента для многих функций, которые вы вызываете последовательно.Например, посмотрите на эти функции, которые вы вызываете, чтобы получить ошибку:
int sqlite3_errcode(sqlite3 *db);
const char *sqlite3_errmsg(sqlite3*);