Why are the two SQL methods using a different type for Args? Why not have them both declared as List?
Sql.ExecQuery2(Query as String, StringArgs() as String)
Sql.ExecNonQuery2(Statement as String, Args as List)
I only mention this because then my own subs can use "Args as List" parameters instead of mixing them up depending on what Sql method is going to be called.
The underlying API of ExecQuery2 expects an array of strings.
That was the historical reason. If I would have written this library today then it would have been a List instead of an array of strings.
It is a list in B4J and B4i library.
It is a list in all of the ExecQueryAsync methods.