If the previous section feels like what you are going through now you need DAME ;-). With DAME it is easy to generate database access code for any application level C++ class. Since DAME works at the SQL statement level, it is very flexible. DAME is a command line tool and can easily be integrated into any development environment. Using DAME consistently in a project allows the database access code to be segregated from the application code. This hopefully will make your application easier to port onto different database systems.
DAME does not read database schema from your database to automatically generate code. I am not very sure how helpful this will be in an application with more than 10 tables.
DAME does not support (at this time anyway) any kind of large objects (LOB, BLOB, CLOB). If your application makes use of LOBs then you can't use DAME for that part of database access.
DAME support for datetime fields is not upto the mark (Yet). You need to get the datatime fields from the database into character strings of the format: "DD/MM/YYYY HH24:MI:SS". The user classes are supposed to have "struct tm" variables available to process the return values or pass datetime values to database. I thought of using Boost DATE/TIME classes, but doing so adds another dependency on to the software, so I rejected that option.
DAME currently supports only C++ code generation using in-built libraries for Oracle™ and Postgresql. Soon DAME should support Java code generation using JDBC and MySQL.
DAME does not have support for NULL values. Without going into the details, I personally did not feel the need for NULL values in an application and that reflects in DAME