Additional Function
1. ExecuteMapList - LIKE DELPHI
' RETURN LIST OF MAPS - DIRECT USING FIELD NAME!
Dim users As List = DBUtils.ExecuteMapList(SQL1, "SELECT * FROM datauser", Null, 0)
For Each user As Map In users
Log(user.Get("username")) '

DIRECT
Log(user.Get("level"))
Next
2.ExecuteSingleValue - Take 1 Value
' WITHOUT MAP
Dim total As Int = DBUtils.ExecuteSingleValue(SQL1, "SELECT COUNT(*) FROM datauser", Null)
3.ExecuteExists - Check Data - Return Boolean
If DBUtils.ExecuteExists(SQL1, "SELECT 1 FROM datauser WHERE username = ?", Array As String("admin")) Then
Log("Admin exists!")
End If
4. InsertMap - Insert 1 Record without List
Dim data As Map
data.Initialize
data.Put("username", "staff1")
data.Put("password", HashMD5("123456"))
data.Put("level", "Cashier")
DBUtils.InsertMap(SQL1, "datauser", data)
'

Additional 1: ExecuteMap2 (Field Name original, no lowercase)
' ============================================================
Public Sub ExecuteMap2(SQL As SQL, Query As String, StringArgs() As String) As Map
'

Additional 2: ExecuteMapList (List of Maps)
' ============================================================
Public Sub ExecuteMapList(SQL As SQL, Query As String, StringArgs() As String, Limit As Int) As List
'

Additional 3: ExecuteMapListLC (Field Name Lowercase)
' ============================================================
Public Sub ExecuteMapListLC(SQL As SQL, Query As String, StringArgs() As String, Limit As Int) As List
'

Additional 4: ExecuteMapListTyped (With Data Type)
' ============================================================
Public Sub ExecuteMapListTyped(SQL As SQL, Query As String, StringArgs() As String, Limit As Int, DBTypes As List) As List
'

Additional 5: ExecuteSingleValue (One Value)
' ============================================================
Public Sub ExecuteSingleValue(SQL As SQL, Query As String, StringArgs() As String) As Object
'

Additional 6: ExecuteExists (Check Double Data)
' ============================================================
Public Sub ExecuteExists(SQL As SQL, Query As String, StringArgs() As String) As Boolean
' ============================================================
'

Additional 7: ExecNonQuery2 (Alias)
' ============================================================
Public Sub ExecNonQuery2(SQL As SQL, Query As String, StringArgs() As Object)
' Additional 8: InsertMap (Single Record)
' ============================================================
Public Sub InsertMap(SQL As SQL, TableName As String, Data As Map) As Boolean
' Additional 9: UpdateRecord3 (Return Boolean)
' ============================================================
Public Sub UpdateRecord3(SQL As SQL, TableName As String, Fields As Map, WhereFields As Map) As Boolean
' Additional 10: GetRowCount (Record Count)
' ============================================================
Public Sub GetRowCount(SQL As SQL, TableName As String) As Int
' Additional 11: GetLastInsertRowId (Latest ID)
' ============================================================
Public Sub GetLastInsertRowId(SQL As SQL) As Long
' Additional 12: BeginTransaction / Commit / Rollback
' ============================================================
Public Sub BeginTransaction(SQL As SQL)
Public Sub Commit(SQL As SQL)
Public Sub Rollback(SQL As SQL)
' Additional 13: Hashed
' ============================================================
Public Sub HashMD5(text As String) As String