1. A computer-implemented method comprising: forming tree representations of a collection of database access statements that are portable across multiple databases; receiving a database access statement issued by a software application; tokenizing the database access statement into a plurality of tokens to create a tokenized access statement; representing the tokenized database access statement in a tree data structure; comparing the tree data structure with the tree representations of the collection of portable database access statements to determine whether the syntax of the database access statement is valid across the multiple databases; traversing the tree data structure to check for compliance with a set of semantic rules, the compliance indicating semantic validity of the data access statement across the multiple databases; determining the database access statement to be portable across the multiple databases in response to the syntactic and semantic validity of the database access statement across the multiple databases; and forwarding the database access statement to a database driver for execution against a database in response to a determination that the database access statement is portable.