如何做一个通用的数据库访问接口,不同种类数据库可以分别实现?
我现在在编写一个程序,在程序中需要使用数据库。现阶段使用的是mysql数据库,mysql有自身的优点。但是将来可能由于性能上的原因换成其他的数据库,比如Oracle数据库,或者其他什么数据库。
为了使程序不依赖于具体的数据库实现,我想写一个“通用的数据库访问接口”。这个接口完全是事务性的。这个接口的一些方法是比较容易确定的,比如插入一条用结构体XXX表示的数据:insertXXXData(XXX& x);
但是如果是查询,特别是有很多条件组合的查询的时候,就不知道该怎么写了。听说了两个方法:
1. 有人说是直接传入SQL,写成GetXXXData(CString& strSQL, Vector<XXX>& vecX);但是这个SQL语句会不会由于数据库的不同而有所改变呢?而且直接把SQL写在接口中,上层用起来会比较麻烦。
2. 在接口当中用用自己定义的一些类型来表示条件,再用一些操作符来将这些条件连接起来。这个方法我都没有想清楚,也许根本就不现实。
大家有什么好方法来写这个“通用的数据库访问接口”呢?