В официальной документации SQLite по C API (www*1002*) для вызова API sqlite3_close()
Я могу прочитать это:
Закрытие соединения с базой данных
int sqlite3_close(sqlite3*);
int sqlite3_close_v2(sqlite3*);
Процедуры sqlite3_close()
и sqlite3_close_v2()
являются деструкторами для объекта sqlite3
. Вызовы sqlite3_close()
и sqlite3_close_v2()
возвращают SQLITE_OK
, если объект sqlite3
успешно уничтожен и все связанные ресурсы освобождены.
Если соединение с базой данных связано с незавершенными подготовленными операторами или незавершенными sqlite3_backup
объекты затем sqlite3_close()
оставят соединение с базой данных открытым и вернут SQLITE_BUSY
.
Как эти две функции с возвращаемым значением int
могут вернуть строку SQLITE_OK
и SQLITE_BUSY
? Это невозможно. Где я могу поймать строки, возвращаемые функциями? Я думал об использовании sqlite3_errmsg()
(www*1031*) следующим образом:
do{
sqlite3_close(my_db);
}
while(strcmp(sqlite3_errmsg(my_db),"SQLITE_BUSY") == 0);
Это приводит к большому количеству вызовов API, которые, вероятно, нагружают базу данных. У кого-нибудь есть лучшее решение?