首先,我们都必须通过数据库包装器/管理器对数据库进行编程,如sqliteman或CppSQLite。
但是数据库包装器是特定于一种类型的数据库的,这对程序员来说并不方便,因为在数据库被篡改的情况下需要进行大量的修改。
因此,我想写一个通用的数据库包装器,可以与各种类型的数据库接口。
我已经创建了一个类模板,如下所示。
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)有什么不同?
请帮帮忙。
谢谢。
发布于 2010-10-12 20:31:35
ODBC是协议。它是开放的数据库连接,它定义了数据库应该公开的函数,以便用户可以在他们的C/C++代码中使用它。通常,数据库会提供自己的ODBC兼容驱动程序。Soci是一个库,它可以做你想做的事情。它是一个库,所以它必须有自己的实现,可以直接使用。
发布于 2010-10-12 19:07:42
1个连接用于每个表访问,您将交换数据库网络使用情况。创建连接类,连接细节,最好是静态实现,并将其用作类的组件(组合)。
保持您的连接独立于您的数据库事务。如果一个事务失败,至少您可以抢占线程,并在下一个事务中使用相同的连接详细信息。您可以将同一连接用于多次数据库尝试,而不是创建一个连接/表访问。
发布于 2010-10-12 19:08:38
这实际上不是对您的特定问题的回答,但是使用Soci如何呢?它支持sqlite、postgresql和mysql,也支持Oracle、Firebird和ODBC。
https://stackoverflow.com/questions/3913901
复制相似问题