AFAIK,我们都必须通过数据库包装 / 管理器(如 sqliteman 或 CppSQLite)编程到数据库。
但是数据库包装器特定于一种类型的数据库,这对于程序员来说是不方便的,因为如果数据库被封存,需要进行大量修改。
因此,我想写一个通用的数据库包装器,可以与各种数据库接口。
我创建了一个类模板,如下所示。
template<typename T>
class ClsDatabaseManager
{
public:
// Pure Virtual Function
// All derived cl must implements it and forward the call
// appropriate database wrapper
connect(string);
disconnect(string);
Execute(string);
CreateTable(string);
CreateDatabase(string);
private:
T m_table;
T m_database;
};
class sqliteManager : public ClsDatabaseManager<T>
{
// Implement all the function by forward the call
};
因此,我将使用特征根据提供的模板参数获取信息类型。
此模板参数是从此基类派生的类类型,例如 sqlite,postgresql 和 mysql。
所以,任何建议或建议我的设计。
如何创建通用数据库接口并将调用转发到特定的数据库接口库。
编辑:
ODBC 和 C ++ 数据库访问库(Soci)之间有什么不同?
请帮忙。
谢谢
ODBC 是协议。它是开放的数据库连接,它定义了数据库应该公开的功能,以便用户可以在他们的 C / C++ 代码中使用它。通常数据库提供自己的 ODBC 兼容驱动程序。Soci 是做你想要的东西的库。它是一个库,所以它必须有它自己的实现,你可以直接使用。
创建 Connection 类,连接详细信息,最好是静态实现,并将其用作类的组件(Composition)。
保持您的连接独立于您的数据库事务。如果一个事务失败,至少您可以抢占该线程并对下一个事务使用相同的连接详细信息。您可以对多个数据库尝试使用相同的连接,而不是创建 1 个连接 / 表访问。
这实际上并不是您的特定问题的答案,但是使用Soci呢?它确实支持 sqlite,postgresql 和 mysql,以及 Oracle,Firebird 和 ODBC。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(45条)