我不知道如何使用Boost C ++从SQL恢复通用对象

问题描述 投票:0回答:1
一些代码:

selectOperation.cpp #include "SelectOperation.h" SelectOperation::SelectOperation(const std::string& tableName) { sql_statement = "SELECT * FROM " + tableName; } void SelectOperation::prepareStatement(sqlite3_stmt** stmt, sqlite3* db) { int rc = sqlite3_prepare_v2(db, sql_statement.c_str(), -1, stmt, nullptr); if (rc != SQLITE_OK) { throw DbException("Failed to prepare select statement: " + std::string(sqlite3_errmsg(db))); } }
我正在尝试做这些SQL的事情,而IDK如何询问我在做什么
#pragma once #include "../SqlOperation.h" #include "../../Exceptions/DbException.h" #include "ITableRecord.h" #include <sqlite3.h> #include <vector> #include <string> class SelectOperation : public SqlOperation { public: SelectOperation(const std::string& tableName); void prepareStatement(sqlite3_stmt** stmt, sqlite3* db) override; };

目前,返回空白的唯一原因是因为我不知道如何查询我不知道形状的对象。在此程序中,为了绝对简单,我假设输入到数据库中的所有内容都将最少具有:整数ID,字符串名称,然后是任何对象类型的任何其他行。我希望能够返回对象,而不是对象的字符串或表示形式。
我还有许多其他类似类别的类,例如插入删除。...应用程序使我可以创建表,并应该让我操纵它们。
我希望能够从MySQL数据库中选择一个特定的表,并以等效的C ++类表示该表;有点像Orm对我们所做的;但是我有点想自己做。我可以创建和丢弃表,并且可以将新的表和对象插入其中,并在其中删除表和对象;但是,如果我尝试选择一个用于查看或编辑的表;它不太有用,因为当它们在DB中以表格输入时,在内存或其他任何内容中都没有等效的C ++类。我能做的最好的方法是返回表格的打印摘要,但我想实际检索“对象”本身,而不是代表它。我真的很想达到我可以从中生成代码的地步 - 但这是一个伸展的目标。更真实地,我希望能够通过SQL本身查看和编辑DB中的表格,这应该是一个更易于管理的目标;但是在这种情况下,如果我查询表,那么如果我不知道形状是什么,我将无法打印某些内容(即表有多少行)。
我可以共享更多代码,因为我意识到这只是一件小事,但是至少有20个文件,所以最好分享什么。现在,我特别处理此精选语句,但是如果设计完全好,则IDK。

我在互联网上寻求帮助,现实生活中的人或互联网在我身上没有帮助,AI尚无用 - 尤其是对于这些系统设计类型问题。

看起来您正在尝试在C ++中创建一个类似ORM的系统,但在处理未知结构的表方面努力。您可以使用

PRAGMA table_info(table_name);

获取列名,并在

std::map<std::string, std::any>

中动态存储结果。您目前如何处理

sqlite3_step()

结果?
c++ sql oop boost system-design
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.