UDF > SQLite >


_SQLite_SetTimeout

Définit le temps imparti avant que le gestionnaire soit déclaré occupé

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

Paramètres

$hDB [optionnel] Une base de données ouverte ou -1 pour utiliser la dernière base de données ouverte
$iTimeout [optionnel] Temps imparti [msec]

Valeur de retour

Succès: Retourne $SQLITE_OK.
Échec: Retourne une valeur qui peut être comparée aux constantes $SQLITE_*.
@error: -1 - SQLite a signalé une erreur (Examinez la valeur de retour)
 1 - Erreur dans l'appel de l'API SQLite 'sqlite3_busy_timeout'
 2 - Appel empêché par SafeMode

Remarque

Cette routine crée un gestionnaire d'occupation qui se met en veille pendant un moment quand une table est verrouillée. Le gestionnaire va se mettre en veille plusieurs fois jusqu'à ce que au moins "ms" millisecondes de veille ont été faites. Après "ms" millisecondes de veille, le gestionnaire retourne 0, et par suite sqlite3_exec() retourne $SQLITE_BUSY.

En relation

_SQLite_Query

Exemple

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

_SQLite_Startup()
ConsoleWrite("_SQLite_LibVersion=" & _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); ")
; La table 'test' est occupée maintenant...

_SQLite_SetTimeout($hDB_b, 0)
$iTimer = TimerInit()
$iRval = _SQLite_Exec($hDB_b, "SELECT * FROM test") ; Ceci échouera
MsgBox($MB_SYSTEMMODAL, "_SQLite_SetTimeout Example No Timeout", "Time: " & TimerDiff($iTimer) & @CRLF _
         & "Error: " & _SQLite_ErrMsg($hDB_b) & @CRLF)
_SQLite_SetTimeout($hDB_b, 5000)
$iTimer = TimerInit()
$iRval = _SQLite_Exec($hDB_b, "SELECT * FROM test") ; Ceci échouera
MsgBox($MB_SYSTEMMODAL, "_SQLite_SetTimeout Example 5 Sec Timeout", "Time: " & TimerDiff($iTimer) & @CRLF _
         & "Error: " & _SQLite_ErrMsg($hDB_b) & @CRLF)
_SQLite_Exec($hDB_a, "END; ")
_SQLite_Close($hDB_a)
_SQLite_Close($hDB_b)
_SQLite_Shutdown()
FileDelete($sDatabase)