我在写一些代码与数据库进行交互。我的解决方案是使用各种结构的向量来表示数据库中的每个表。我想在我的Database类中创建一个模板来push_back矢量并插入一个新的(空白)行;然而,我不知道在“push_back(...)”中放置什么。下面这种有道理但不起作用。关键是正在返回,以便我可以稍后与类中的向量进行交互。通用矢量推回模板
template <class T> void Database::newRecord(T& Type, int& key)
{
Type.push_back(Type.value_type());
key = Type.size()-1;
Type[key].PK = key;
}
我使用调用程序如下:
vector<table_row> table;
int key;
newRecord(table, key);
table[key]...
的结构看起来是这样的:
struct table_row {
int PK;
....
};
谢谢!
虽然这种方法看起来很诱人,我不认为这是一个非常好的设计。一般来说,应该将I/O代码(包括数据库访问)与业务模型对象(即正在构建的结构和集合)分开。通常的习惯用法是这样的: – Stabledog
1-创建实体对象(即'customer')2-创建数据库连接包装器(抽象数据库连接字符串的东西3-创建一个加载器对象,它知道如何从中提取数据数据库并填充你的实体; 4,将加载器应用于实体以填充它们;相反,加载器需要检测没有主键的新记录并确定键,并将其推入然后在数据库中插入同步它们,通常这些“ORM框架”最终会从工具中产生大量的自动生成的代码。 – Stabledog
我相信你是对的,但我没有我真的想发送任何这些数据,我只是查询数据,以便我可以使用它来进行资源分配计算,但是如果我想要修改数据表,我会请务必前来重新阅读您的建议。 – Ash