#include-once
#include <SQLite.au3>
#include <SQLite.dll.au3>

; #FUNCTION# ====================================================================================================================
; Name...........:  _SQLArrays_Exec()
; Description ...: 	Führt einen SQLite Befehl aus; Tabellenname mit # ersetzen...
; Parameters ....: 	$hSQLarray = Handle zum _SQLArrays_Startup()
;					$hSQLarray2DData = Handle vom _SQLArrays_Array2DAdd()
;					$SQLarray_SQLCom = SQLite Befehl
;					$SQLarray_DisplayConsole = Ausgabe des Ergebnisses in die Console
; Return values .: 	n/a
; Author ........: 	chrisatack( schiffer-soft.de ) ( autoit.de )
; Remarks .......: 	n/a
; ===============================================================================================================================
Func _SQLArrays_Exec($hSQLarray, $hSQLarrayTableName, $SQLarray_SQLCom,$SQLarray_DisplayConsole = False)
	Local $aResult, $iRows, $iColumns, $iRval
	$SQLarray_SQLCom = StringReplace($SQLarray_SQLCom,'#',$hSQLarrayTableName)
	$iRval = _SQLite_GetTable2d($hSQLarray, $SQLarray_SQLCom, $aResult, $iRows, $iColumns)
	If $iRval = $SQLITE_OK Then
		If $SQLarray_DisplayConsole Then
			_SQLite_Display2DResult($aResult)
		EndIf
		Return $aResult
	Else
		SetError(1)
		ConsoleWrite( _SQLite_ErrMsg()&@CRLF)
		Return -1
	EndIf
EndFunc

; #FUNCTION# ====================================================================================================================
; Name...........:  _SQLArrays_Display2DArray()
; Description ...: 	Zeigt den Inhalt eines 2D SQLArrays in der Console...
; Parameters ....: 	$hSQLarray = Handle zum _SQLArrays_Startup()
;					$hSQLarray2DData = Daten die angezeigt werden sollen
; Return values .: 	n/a
; Author ........: 	chrisatack ( schiffer-soft.de ) ( autoit.de )
; Remarks .......: 	n/a
; ===============================================================================================================================
Func _SQLArrays_Display2DArray($hSQLarray,$hSQLarray2DData)
	Local $aResult, $iRows, $iColumns, $iRval
	$iRval = _SQLite_GetTable2d($hSQLarray, "SELECT * FROM "&$hSQLarray2DData&" WHERE 1;", $aResult, $iRows, $iColumns)
	If $iRval = $SQLITE_OK Then
		_SQLite_Display2DResult($aResult)
	Else
		SetError (1)
		ConsoleWrite( _SQLite_ErrMsg()&@CRLF)
		Return -1
	EndIf
EndFunc

; #FUNCTION# ====================================================================================================================
; Name...........:  _SQLArrays_Startup()
; Description ...: 	Startet SQLite...
; Parameters ....: 	n/a
; Return values .: 	Handle zum _SQLArrays_Startup()
; Author ........: 	chrisatack ( schiffer-soft.de ) ( autoit.de )
; Remarks .......: 	n/a
; ===============================================================================================================================
Func _SQLArrays_Startup()
	_SQLite_Startup()
	If @error Then
		SetError (1)
		Return -1
	EndIf
	Return _SQLite_Open()
EndFunc

; #FUNCTION# ====================================================================================================================
; Name...........:  _SQLArrays_Array2DToSQL()
; Description ...: 	Fügt der DB ein 2D Array hinzu...
; Parameters ....: 	$hSQLarray = Handle zum _SQLArrays_Startup()
;					$SQLarray_Data = Das 2D Daten Array
; Return values .: 	n/a
; Author ........: 	chrisatack ( schiffer-soft.de ) ( autoit.de )
; Remarks .......: 	n/a
; ===============================================================================================================================
Func _SQLArrays_Array2DToSQL($hSQLarray, $SQLarray_Data)
	If Not IsArray( $SQLarray_Data ) Then
		SetError(1)
		Return -1
	EndIf
	If UBound($SQLarray_Data,2) < 1 Then
		SetError(2)
		Return -1
	EndIf

	Local $SQLarray_TableName = "tab"&Random(100000,999999,1)
	Local $SQLarray_SQLCom = "Create table "&$SQLarray_TableName&" ( "
	For $SQLarray_Col = 0 To UBound($SQLarray_Data,2)-1
		$SQLarray_SQLCom &= "'"&$SQLarray_Data[0][$SQLarray_Col]&"' int , "
	Next
	$SQLarray_SQLCom = StringTrimRight($SQLarray_SQLCom,2)&' );'
	_SQLite_Exec ($hSQLarray, $SQLarray_SQLCom )

	Local $SQLarray_SQLCom = ''
	For $SQLarray_i = 1 To UBound($SQLarray_Data)-1
		$SQLarray_SQLCom &= 'Insert into '&$SQLarray_TableName&' values ('
		For $SQLarray_i2 = 0 To UBound($SQLarray_Data,2)-1
			$SQLarray_SQLCom &= "'"&$SQLarray_Data[$SQLarray_i][$SQLarray_i2]&"',"
		Next
		$SQLarray_SQLCom = StringTrimRight ( $SQLarray_SQLCom,1)&');'&@CRLF
	Next
	_SQLite_Exec ($hSQLarray, $SQLarray_SQLCom )
	Return $SQLarray_TableName
EndFunc