RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Коды ошибок и сообщения

int sqlite3_errcode(sqlite3 *db);
int sqlite3_extended_errcode(sqlite3 *db);
const char *sqlite3_errmsg(sqlite3*);
const void *sqlite3_errmsg16(sqlite3*);
const char *sqlite3_errstr(int);
int sqlite3_error_offset(sqlite3 *db);

Если новый вызов API sqlite3_* при связи с соединением с базой данных D провалился, sqlite3_errcode(D) возвращает числовой код результата или расширенный код результата. sqlite3_extended_errcode() это то же самое за исключением того, что это всегда возвращает расширенный код результата , даже когда расширенные коды результата отключены.

Значения, возвращенные sqlite3_errcode() и/или sqlite3_extended_errcode(), могли бы измениться с каждым вызовом API. Кроме того, есть некоторые интерфейсы, которые, как гарантируют, никогда не изменят значение кода ошибки. Интерфейсы сохранения кода ошибки включают следующие:

  • sqlite3_errcode()
  • sqlite3_extended_errcode()
  • sqlite3_errmsg()
  • sqlite3_errmsg16()
  • sqlite3_error_offset()

sqlite3_errmsg() и sqlite3_errmsg16() вернут текст на английском, который описывает ошибку, как UTF-8 или как UTF-16, соответственно. Памятью, чтобы хранить последовательность сообщения об ошибке управляют внутренне. Приложение не должно волноваться об освобождении результата. Однако, строка ошибки могла бы быть переписана или освобождена последующими обращениями к другим функциям интерфейса SQLite.

sqlite3_errstr() возвращает англоязычный текст, который описывает код результата, как UTF-8. Памятью, чтобы хранить последовательность сообщения об ошибке, управляют внутренне и приложение не должно ее освободить.

Если новая ошибка ссылается на определенный символ во входе SQL, SQL, sqlite3_error_offset() возвращает байтовое смещение от начала того символа. Байтовое смещение, возвращенное sqlite3_error_offset(), предполагает, что вход SQL является UTF8. Если новая ошибка не ссылается на определенный символ во входе SQL, то sqlite3_error_offset() вернет -1.

Когда преобразовано в последовательную форму многопоточный режим используется, могло бы иметь место, что вторая ошибка происходит в отдельном потоке в промежуточное время между первой ошибкой и вызовом этих интерфейсов. Когда это произойдет, о второй ошибке сообщат, так как эти интерфейсы всегда сообщают о новом результате. Чтобы избежать этого, каждый поток может получить исключительное использование соединения с базой данных D вызовом sqlite3_mutex_enter( sqlite3_db_mutex(D)) до начала использования D и вызвать sqlite3_mutex_leave (sqlite3_db_mutex(D)) после того, как все обращения к интерфейсам, перечисленным здесь, будут закончены.

Если интерфейс терпит неудачу с SQLITE_MISUSE, это означает, что интерфейс был вызван неправильно приложением. В этом случае код ошибки и сообщение могут или не могут быть установлены.