I think the best solution would to double up all setString and getString calls with getUnicodeString and setUnicodeString. There is a trend towards obscuring the different between Ascii and Unicode with conditional declarations, making most source bi-modal, that I am not comfortable with. I have also added a StatementMetaData class to support Odbc with functionality not in Jdbc. Necessary, but not a biggie. I add a driver manager, it will almost certainly use this mechanism.
Object lifetimes are a little muddled.
The DatabaseMetaDataClass, straight out of Jdbc, is an interesting catalog of almost everything wrong with the SQL standard. Like Jdbc, there is not explicit support for multiple transactions per process. To get them, multiple attachments are required.