D�finit le temps imparti avant que le gestionnaire soit d�clar� occup�
#include <SQLite.au3>
_SQLite_SetTimeout ( [$hDB = -1 [, $iTimeout = 1000]] )
$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] |
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 |
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.
#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)