Beside its advantages, ODBC has several drawbacks. Following are the main drawbacks of ODBC.
Keeps on changing: ODBC is provided by Microsoft and like other Microsoft products it keeps evolving and the companies using ODBC should keep up with it. In addition to this, you need to pay to use ODBC SDK 8 and later versions.
Usage of JNI libraries: Though ODBC solves vendor dependency problems by providing common API to interact with all the databases, at the end of the day ODBC is also a native API therefore, you need to use JNI in your Java applications which is not suggestable.
Uncertain: Since Microsoft has committed to provide support for OLE/DB which is more inclined to object-based programming rather than procedural. We cannot assume how it is going to be in the future.
Complicated to build: ODBC is drivers are a bit complicated to build and maintain.
Reliability depends on the underlying framework: Since ODBC specification specifies only the application protocol, the ODBC diver inherits the features of the framework it uses. Thus the reliability depends on the implementation of requestresponse protocol of the underlying framework.
Severs not standardized: In ODBC since most of the work is done by clients, it is difficult to scale. In addition to this in ODBC driver servers are not sufficiently standardized. Therefore, clients maintain their own drivers, naming tables, and macros, which complicates management at larger sites.
Slow with large databases: Though it is easy to use when used with larger database management systems ODBC will be slow.