# Function Reference

# _SQLite_GetTableData2D

Passes out a 2Dimensional array containing data of executed query

#include <SQLite.au3>
_SQLite_GetTableData2D ( $hDB, $sSQL, ByRef $aResult, ByRef $iRows, ByRef $aNames )

## Parameters

$hDB | An Open Database, Use -1 To use Last Opened Database
$sSQL | SQL Statement to be executed
$aResult | Passes out the result (see remarks to get only data rows without header)
$iRows | Passes out the amount of 'data' Rows
$aNames | Passes out an array containing the Columns names

## Return Value

Success: | $SQLITE_OK.
Failure: | a value that can be compared against $SQLITE_* constants.
@error: | -1 - SQLite reported an error (Check Return value) 1 - Error Calling _SQLite_Query() 2 - Error calling SQLite API 'sqlite3_free_table' 3 - Call prevented by SafeMode 4 - Abort, Interrupt or @error set by Callback (@extended set to SQLite error)

## Remarks

The number of values inserted into $aResult will be ($iRows) * ($iColumns).
A NULL will be returned as Numeric 0.
This function uses more memory than _SQLite_Query() / _SQLite_Fetch*()... but it's faster.
If you do not need a result (or if there will be none) consider using SQLite_Exec().

## Related

_SQLite_Display2DResult, _SQLite_Exec, _SQLite_GetTable, _SQLite_GetTable2d, _SQLite_Query

## Example

### Retrieve Data without header

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

    Local $aResult, $iRows, $aNames, $iRval

    _SQLite_Startup()
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite3.dll Can't be Loaded!")
        Exit -1
    EndIf
    ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
    _SQLite_Open() ; Open a :memory: database
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't Load Database!")
        Exit -1
    EndIf

    ; Example 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())

    $iRval = _SQLite_GetTableData2D(-1, "SELECT * FROM persons;", $aResult, $iRows, $aNames)
    If $iRval = $SQLITE_OK Then
        _SQLite_Display2DResult($aResult)

        ; $aResult looks like this:
        ; Alice  43
        ; Bob    28
        ; Cindy  21

    Else
        MsgBox($MB_SYSTEMMODAL, "SQLite Error: " & $iRval, _SQLite_ErrMsg())
    EndIf

    _SQLite_Close()
    _SQLite_Shutdown()