我在寫一些代碼與數據庫進行交互。我的解決方案是使用各種結構的向量來表示數據庫中的每個表。我想在我的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