UDF > SQLite >


_SQLite_GetTable

Retourne dans une variable de sortie un tableau à une dimension contenant les noms des tables et la requête exécutée

#include <SQLite.au3>
_SQLite_GetTable ( $hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $iColumns [, $iCharSize = -1] )

Paramètres

$hDB Une base de données ouverte, utilisez -1 pour utiliser la base de données de la dernière ouverture
$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

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 - Appel Empêché par SafeMode
 2 - Erreur retournée par _SQLite_Query() dans @extended
 3 - Erreur retournée par _SQLite_FetchNames() dans @extended
 4 - Erreur retournée par _SQLite_FetchData() dans @extended

Remarque

Le nombre de valeurs insérées dans $aResult sera (($iRows) + 1) * ($iColumns), ce nombre est inséré dans $aResult[0].
NULL sera retourné par la valeur numérique 0.
Si vous n'avez pas besoin d'un résultat (ou si il n'y en aura aucun) envisager d'utiliser _SQLite_Exec().

En relation

_SQLite_Exec, _SQLite_GetTable2d, _SQLite_Query

Exemple

#include <Array.au3>
#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_GetTable(-1, "SELECT * FROM persons; ", $aResult, $iRows, $iColumns)
If $iRval = $SQLITE_OK Then
    ; $aResult apparait comme ceci:
    ; [0]    = 8
    ; [1]    = Name
    ; [2]    = Age
    ; [3]    = Alice
    ; [4]    = 43
    ; [5]    = Bob
    ; [6]    = 28
    ; [7]    = Cindy
    ; [8]    = 21
    _ArrayDisplay($aResult, "Query Result")
Else
    MsgBox($MB_SYSTEMMODAL, "SQLite Error: " & $iRval, _SQLite_ErrMsg())
EndIf

_SQLite_Close()
_SQLite_Shutdown()