Функция _SQLite_SetTimeout

 ↑  ←  Описание функции


_SQLite_SetTimeout

Устанавливает тайм-аут занятости обработчика

#include <SQLite.au3>
_SQLite_SetTimeout([$hDB = -1 [, $iTimeout = 1000]])

Параметры

$hDB [необязательный] Дескриптор открытой базы данных, укажите -1 для использования последней открытой базы данных
$iTimeout [необязательный] Тайм-аут [мс]

Возвращаемое значение

Успех:Возвращает $SQLITE_OK
Ошибка:Возвращаемое значение можно сравнить с константами $SQLITE_ *
@error:-1 - SQLite сообщил об ошибке (Проверьте возвращаемое значение)
1 - Ошибка вызова 'sqlite3_busy_timeout' SQLite API
2 - Вызов предотвращен безопасным режимом

Примечания

Эта процедура устанавливает занятость обработчика, который спит, пока таблица заблокирована. Обработчик будет спать какое-то время, но не менее указанных миллисекунд. По истечении этого времени обработчик возвращает 0, выполняет sqlite3_exec() и возвращает $SQLITE_BUSY.

См. также

_SQLite_Query

Пример

#include <SQLite.au3>
#include <SQLite.dll.au3>

_SQLite_Startup()
ConsoleWrite("Версия библиотеки SQLite = " & _SQLite_LibVersion() & @CRLF)

Local $sDatabase, $hDB_a, $hDB_b, $iTimer, $iRval
$sDatabase = _TempFile()
$hDB_a = _SQLite_Open($sDatabase)
$hDB_b = _SQLite_Open($sDatabase)

_SQLite_Exec($hDB_a, "BEGIN EXCLUSIVE;")
_SQLite_Exec($hDB_a, "CREATE TABLE test (a,b,c);")
_SQLite_Exec($hDB_a, "INSERT INTO test VALUES (1,2,3);")
; таблица test занята...

_SQLite_SetTimeout($hDB_b, 0)
$iTimer = TimerInit()
$iRval = _SQLite_Exec($hDB_b, "SELECT * FROM test") ; приведет к ошибке
MsgBox(0, "_SQLite_SetTimeout пример без тайм-аута", "Время: " & TimerDiff($iTimer) & @CRLF & _
        "Ошибка: " & _SQLite_ErrMsg($hDB_b) & @CRLF)
_SQLite_SetTimeout($hDB_b, 5000)
$iTimer = TimerInit()
$iRval = _SQLite_Exec($hDB_b, "SELECT * FROM test") ; приведет к ошибке
MsgBox(0, "_SQLite_SetTimeout пример с 5-ти секундным тайм-аутом", "Время: " & TimerDiff($iTimer) & @CRLF & _
        "Ошибка: " & _SQLite_ErrMsg($hDB_b) & @CRLF)
_SQLite_Exec($hDB_a, "END;")
_SQLite_Close($hDB_a)
_SQLite_Close($hDB_b)
_SQLite_Shutdown()
FileDelete($sDatabase)