Ifix数据库管理器:通用数据库管理器 (Wrapper)

关于Ifix数据库管理器的问题,在what is a database manager中经常遇到, AFAIK,我们都必须通过数据库包装 / 管理器(如 sqliteman 或 CppSQLite)编程到数据库。

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)之间有什么不同?

请帮忙。

谢谢

1

ODBC 是协议。它是开放的数据库连接,它定义了数据库应该公开的功能,以便用户可以在他们的 C / C++ 代码中使用它。通常数据库提供自己的 ODBC 兼容驱动程序。Soci 是做你想要的东西的库。它是一个库,所以它必须有它自己的实现,你可以直接使用。

0

创建 Connection 类,连接详细信息,最好是静态实现,并将其用作类的组件(Composition)。

保持您的连接独立于您的数据库事务。如果一个事务失败,至少您可以抢占该线程并对下一个事务使用相同的连接详细信息。您可以对多个数据库尝试使用相同的连接,而不是创建 1 个连接 / 表访问。

0

这实际上并不是您的特定问题的答案,但是使用Soci呢?它确实支持 sqlite,postgresql 和 mysql,以及 Oracle,Firebird 和 ODBC。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(467)
什么是ota:OTA良好实践:防止“无OTA”更新
上一篇
电脑桌面分区:将平板电脑连接到桌面 Web签名板
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(45条)