Retourne dans une variable de sortie un tableau à deux dimensions contenant les noms des colonnes et les données de la requête exécutée
#include <SQLite.au3>
_SQLite_GetTable2d ( $hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $iColumns [, $iCharSize = -1 [, $bSwichDimensions = False]] )
$hDB | Une base de données ouverte, ou -1 pour utiliser la dernière base de données ouverte |
$sSQL | Instruction SQL qui doit être exécutée |
$aResult | variable de sortie qui contiendra le résultat |
$iRows | variable de sortie qui contiendra le nombre de lignes de 'données' |
$iColumns | variable de sortie qui contiendra le nombre de colonnes |
$iCharSize | [optionnel] Spécifie la taille maximale d'un champ de données |
$bSwichDimensions | [optionnel] Commute les dimensions de $aResult |
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 lors de l'appel de _SQLite_Query() 2 - Erreur dans l'appel de l'API SQLite 'sqlite3_free_table' 3 - Appel empêché par SafeMode 4 - Abandon, interruption ou @error défini par Callback (@extended contient l'erreur SQLite ) |
Le nombre de valeurs insérées dans $aResult sera (($iRows) + 1) * ($iColumns).
NULL sera retourné par la valeur numérique 0.
Cette fonction utilise plus de mémoire que _SQLite_Query() / _SQLite_Fetch*()... Mais elle est plus rapide.
Si vous n'avez pas besoin d'un résultat (ou si il n'y en aura aucun) envisager d'utiliser _SQLite_Exec().
_SQLite_Display2DResult, _SQLite_Exec, _SQLite_GetTable, _SQLite_Query
#include <MsgBoxConstants.au3> #include <SQLite.au3> #include <SQLite.dll.au3> Local $aResult, $iRows, $iColumns, $iRval _SQLite_Startup() If @error Then MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite.dll Can't be Loaded!") Exit -1 EndIf ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF) _SQLite_Open() ; Ouvre une base de données :memory: If @error Then MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't Load Database!") Exit -1 EndIf ; Exemple de Table ; Name | Age ; ----------------------- ; Alice | 43 ; Bob | 28 ; Cindy | 21 If Not _SQLite_Exec(-1, "CREATE TEMP TABLE persons (Name, Age); ") = $SQLITE_OK Then _ MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg()) If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Alice','43'); ") = $SQLITE_OK Then _ MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg()) If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Bob','28'); ") = $SQLITE_OK Then _ MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg()) If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Cindy','21'); ") = $SQLITE_OK Then _ MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg()) ; Query $iRval = _SQLite_GetTable2d(-1, "SELECT * FROM persons; ", $aResult, $iRows, $iColumns) If $iRval = $SQLITE_OK Then _SQLite_Display2DResult($aResult) ; $aResult looks like this: ; Name Age ; Alice 43 ; Bob 28 ; Cindy 21 ; If the dimensions would be switched in _SQLite_GetTable2d the result would look like this: ; Name Alice Bob Cindy ; Age 43 28 21 Else MsgBox($MB_SYSTEMMODAL, "SQLite Error: " & $iRval, _SQLite_ErrMsg()) EndIf _SQLite_Close() _SQLite_Shutdown()