UDF > SQLite >


_SQLite_GetTable2d

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]] )

Paramètres

$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

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 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 )

Remarque

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().

En relation

_SQLite_Display2DResult, _SQLite_Exec, _SQLite_GetTable, _SQLite_Query

Exemple

#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()