首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用数据库管理器(包装器)

通用数据库管理器(包装器)
EN

Stack Overflow用户
提问于 2010-10-12 18:57:37
回答 3查看 2K关注 0票数 2

首先,我们都必须通过数据库包装器/管理器对数据库进行编程,如sqliteman或CppSQLite。

但是数据库包装器是特定于一种类型的数据库的,这对程序员来说并不方便,因为在数据库被篡改的情况下需要进行大量的修改。

因此,我想写一个通用的数据库包装器,可以与各种类型的数据库接口。

我已经创建了一个类模板,如下所示。

代码语言:javascript
复制
template<typename T>
class ClsDatabaseManager
{
public:

// Pure Virtual Function
// All derived classes 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)有什么不同?

请帮帮忙。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-12 20:31:35

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

票数 1
EN

Stack Overflow用户

发布于 2010-10-12 19:07:42

1个连接用于每个表访问,您将交换数据库网络使用情况。创建连接类,连接细节,最好是静态实现,并将其用作类的组件(组合)。

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

票数 0
EN

Stack Overflow用户

发布于 2010-10-12 19:08:38

这实际上不是对您的特定问题的回答,但是使用Soci如何呢?它支持sqlite、postgresql和mysql,也支持Oracle、Firebird和ODBC。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3913901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档