Hey, like me and Timmy said it should be nice to know wheter a query succeded or not, so i suggest to change the API:
ExecuteSync:
1st return: affectedRows or nil if query failed
SelectSync:
1st return: data or nil if query failed
Execute:
my_database:Execute(query, callback(affectedRows, succeded)?, parameters...?)
Select:
my_database:Select(query, callback(data, succeded)?, parameters...?)
Do not hesitate to post a comment below if you think something could be improved